[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]