summaryrefslogtreecommitdiff
path: root/debian/patches/0167-fix-group-reading.diff
blob: 60e2efc85d2b7e6720ba714e0bda98ff161bfdba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
qt-bugs@ issue : none
Trolltech task ID : none yet
bugs.kde.org number : None
applied: no
author: Dirk Mueller <mueller@kde.org>

in big user environments, getgrgid_r() needs more memory than sysconf() returns.
Try a bit harder.

--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -857,9 +857,13 @@
         size_max = sysconf(_SC_GETGR_R_SIZE_MAX);
         if (size_max == -1)
             size_max = 1024;
-        buf.resize(size_max);
-        struct group entry;
-        getgrgid_r(ownerId(own), &entry, buf.data(), buf.size(), &gr);
+        for (;size_max < 256000; size_max += size_max) {
+            buf.resize(size_max);
+            struct group entry;
+            if (!getgrgid_r(ownerId(own), &entry, buf.data(), buf.size(), &gr) || errno != ERANGE)
+                break;
+
+        }
 #else
         gr = getgrgid(ownerId(own));
 #endif