ruby-changes:19220
From: kosaki <ko1@a...>
Date: Mon, 11 Apr 2011 21:18:38 +0900 (JST)
Subject: [ruby-changes:19220] Ruby:r31259 (trunk): * file.c (rb_group_member): kill 256K of stack usage.
kosaki 2011-04-11 21:18:32 +0900 (Mon, 11 Apr 2011) New Revision: 31259 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31259 Log: * file.c (rb_group_member): kill 256K of stack usage. the patch was written by Eric Wong. [ruby-core:35699] Modified files: trunk/ChangeLog trunk/file.c Index: ChangeLog =================================================================== --- ChangeLog (revision 31258) +++ ChangeLog (revision 31259) @@ -1,3 +1,8 @@ +Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@g...> + + * file.c (rb_group_member): kill 256K of stack usage. + the patch was written by Eric Wong. [ruby-core:35699] + Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@s...> * ext/openssl/ossl.c: Fix typo, document version constants. Index: file.c =================================================================== --- file.c (revision 31258) +++ file.c (revision 31259) @@ -982,6 +982,7 @@ static int rb_group_member(GETGROUPS_T gid) { + int rv = FALSE; #ifndef _WIN32 if (getgid() == gid || getegid() == gid) return TRUE; @@ -995,17 +996,22 @@ # endif # endif { - GETGROUPS_T gary[NGROUPS]; + GETGROUPS_T *gary; int anum; + gary = xmalloc(NGROUPS * sizeof(GETGROUPS_T)); anum = getgroups(NGROUPS, gary); - while (--anum >= 0) - if (gary[anum] == gid) - return TRUE; + while (--anum >= 0) { + if (gary[anum] == gid) { + rv = TRUE; + break; + } + } + xfree(gary); } # endif #endif - return FALSE; + return rv; } #ifndef S_IXUGO -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/