ruby-changes:68438
From: Nobuyoshi <ko1@a...>
Date: Thu, 14 Oct 2021 00:20:31 +0900 (JST)
Subject: [ruby-changes:68438] 8f480eafab (master): rb_group_member: Simplify
https://git.ruby-lang.org/ruby.git/commit/?id=8f480eafab From 8f480eafabebc55249f1436ab0ca059c239a8134 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Mon, 11 Oct 2021 23:35:26 +0900 Subject: rb_group_member: Simplify --- file.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/file.c b/file.c index d60a46c350..23f81406c6 100644 --- a/file.c +++ b/file.c @@ -1451,7 +1451,7 @@ rb_group_member(GETGROUPS_T gid) https://github.com/ruby/ruby/blob/trunk/file.c#L1451 return FALSE; #else int rv = FALSE; - int groups = 16; + int groups; VALUE v = 0; GETGROUPS_T *gary; int anum = -1; @@ -1459,25 +1459,9 @@ rb_group_member(GETGROUPS_T gid) https://github.com/ruby/ruby/blob/trunk/file.c#L1459 if (getgid() == gid || getegid() == gid) return TRUE; - /* - * On Mac OS X (Mountain Lion), NGROUPS is 16. But libc and kernel - * accept more larger value. - * So we don't trunk NGROUPS anymore. - */ - while (groups <= RB_MAX_GROUPS) { - gary = ALLOCV_N(GETGROUPS_T, v, groups); - anum = getgroups(groups, gary); - if (anum != -1 && anum != groups) - break; - groups *= 2; - if (v) { - ALLOCV_END(v); - v = 0; - } - } - if (anum == -1) - return FALSE; - + groups = getgroups(0, NULL); + gary = ALLOCV_N(GETGROUPS_T, v, groups); + anum = getgroups(groups, gary); while (--anum >= 0) { if (gary[anum] == gid) { rv = TRUE; -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/