* file.c (rb_group_member): kill 256K of stack usage.

the patch was written by Eric Wong. [ruby-core:35699]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kosaki 2011-04-11 12:18:32 +00:00
Родитель 2934feb9ff
Коммит 3b011d1a00
2 изменённых файлов: 16 добавлений и 5 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* 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@segment7.net>
* ext/openssl/ossl.c: Fix typo, document version constants.

16
file.c
Просмотреть файл

@ -982,6 +982,7 @@ rb_file_lstat(VALUE obj)
static int
rb_group_member(GETGROUPS_T gid)
{
int rv = FALSE;
#ifndef _WIN32
if (getgid() == gid || getegid() == gid)
return TRUE;
@ -995,17 +996,22 @@ rb_group_member(GETGROUPS_T gid)
# 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