diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-21 05:12:57 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-21 05:12:57 +0000 |
commit | 1b687aa60c438efea341bb65210bce3e24309cd8 (patch) | |
tree | 52f0d02b13d710be8e355387f05c700021b98a8b | |
parent | aef19b44cac5f55a97f62df1dcf865df50fedf8c (diff) | |
download | ruby-1b687aa60c438efea341bb65210bce3e24309cd8.tar.gz ruby-1b687aa60c438efea341bb65210bce3e24309cd8.tar.xz ruby-1b687aa60c438efea341bb65210bce3e24309cd8.zip |
* ext/etc/etc.c (etc_getpwuid): uid integer should be wraped in
uid_t value. [ruby-core:08897]
* ext/etc/etc.c (etc_getpwuid): uid_t may be bigger than plain
'int' type.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ext/etc/etc.c | 13 |
2 files changed, 19 insertions, 2 deletions
@@ -1,3 +1,11 @@ +Thu Sep 21 13:55:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * ext/etc/etc.c (etc_getpwuid): uid integer should be wraped in + uid_t value. [ruby-core:08897] + + * ext/etc/etc.c (etc_getpwuid): uid_t may be bigger than plain + 'int' type. + Thu Sep 21 10:07:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org> * string.c (rb_str_partition): RDoc typo fixed. [ruby-core:08898] diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 65a2963e7..1bd767d09 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -120,12 +120,21 @@ etc_getpwuid(int argc, VALUE *argv, VALUE obj) { #if defined(HAVE_GETPWENT) VALUE id; - int uid; + uid_t uid; struct passwd *pwd; rb_secure(4); if (rb_scan_args(argc, argv, "01", &id) == 1) { - uid = NUM2INT(id); +#if HAVE_LONG_LONG && HAVE_TYPE_UID_T + if (sizeof(uid_t) > sizeof(int)) { + uid = NUM2ULL(id); + } + else { + uid = NUM2UINT(id); + } +#else + uid = NUM2UINT(id); +#endif } else { uid = getuid(); |