From c6bb8beb5294ce1162ea0f088707a9fe167449a7 Mon Sep 17 00:00:00 2001 From: kosaki Date: Sun, 6 Mar 2011 15:25:58 +0000 Subject: [PATCH] * 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 --- ChangeLog | 5 +++++ process.c | 8 ++++++-- 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 + + * process.c (proc_getgroups): get rid of maxgroups dependency. + ngroups can be calculated dynamically. + Sun Mar 6 23:45:40 2011 KOSAKI Motohiro * 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); - ngroups = getgroups(maxgroups, groups); + groups = ALLOCA_N(rb_gid_t, ngroups); + + ngroups = getgroups(ngroups, groups); if (ngroups == -1) rb_sys_fail(0);