summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-06 15:25:58 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-06 15:25:58 +0000
commitc6bb8beb5294ce1162ea0f088707a9fe167449a7 (patch)
tree58fc9d16e18e414fdc03f13c35066058dd24e49c
parentb1329e3b63193730837e189b927a97cb1d73f3ba (diff)
* process.c (proc_getgroups): get rid of maxgroups dependency.
ngroups can be calculated dynamically. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--process.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f8d3a4f6b..9620802f44 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getgroups): get rid of maxgroups dependency.
+ ngroups can be calculated dynamically.
+
Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
diff --git a/process.c b/process.c
index 51f3804f63..25ad168068 100644
--- a/process.c
+++ b/process.c
@@ -4563,9 +4563,13 @@ proc_getgroups(VALUE obj)
int i, ngroups;
rb_gid_t *groups;
- groups = ALLOCA_N(rb_gid_t, maxgroups);
+ ngroups = getgroups(0, NULL);
+ if (ngroups == -1)
+ rb_sys_fail(0);
+
+ groups = ALLOCA_N(rb_gid_t, ngroups);
- ngroups = getgroups(maxgroups, groups);
+ ngroups = getgroups(ngroups, groups);
if (ngroups == -1)
rb_sys_fail(0);