summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
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);