summaryrefslogtreecommitdiff
path: root/process.c
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 /process.c
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
Diffstat (limited to 'process.c')
-rw-r--r--process.c8
1 files changed, 6 insertions, 2 deletions
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);