summaryrefslogtreecommitdiffstats
path: root/ext/etc
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-21 05:07:50 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-21 05:07:50 +0000
commitaa4594d1a56c44b92e442f69da13882e3bb50956 (patch)
tree6bc0fa884256e7fd04189e53296bcf4253c23e51 /ext/etc
parentd08a5165e9d80cc95e8ad2b74f8d6d2b2a9fab83 (diff)
downloadruby-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/etc')
-rw-r--r--ext/etc/etc.c13
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();