diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-21 05:07:50 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-21 05:07:50 +0000 |
| commit | aa4594d1a56c44b92e442f69da13882e3bb50956 (patch) | |
| tree | 6bc0fa884256e7fd04189e53296bcf4253c23e51 /ext | |
| parent | d08a5165e9d80cc95e8ad2b74f8d6d2b2a9fab83 (diff) | |
| download | ruby-aa4594d1a56c44b92e442f69da13882e3bb50956.tar.gz ruby-aa4594d1a56c44b92e442f69da13882e3bb50956.tar.xz ruby-aa4594d1a56c44b92e442f69da13882e3bb50956.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/branches/ruby_1_8@10979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/etc/etc.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/etc/etc.c b/ext/etc/etc.c index c79640d02..c9ed3d529 100644 --- a/ext/etc/etc.c +++ b/ext/etc/etc.c @@ -126,12 +126,21 @@ etc_getpwuid(argc, argv, 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(); |
