diff options
author | Ana Beatriz Guerrero Lopez <ana@debian.org> | 2009-02-18 00:02:37 +0000 |
---|---|---|
committer | Ana Beatriz Guerrero Lopez <ana@debian.org> | 2009-02-18 00:02:37 +0000 |
commit | 9f72af579a1d31c2ac9572b9b1fb94345ce5043a (patch) | |
tree | b084fb0ff03bac29430b5f2213dd19b06614d2f2 /debian/patches/0167-fix-group-reading.diff | |
parent | 9a2df626010f7cbccdc812aec07172e0ebd2d128 (diff) | |
parent | 27f5b1f4b636b2efd947f3535f056714d32daa02 (diff) | |
download | qt4-x11-9f72af579a1d31c2ac9572b9b1fb94345ce5043a.tar.gz |
moved stuff from trunk/
Diffstat (limited to 'debian/patches/0167-fix-group-reading.diff')
-rw-r--r-- | debian/patches/0167-fix-group-reading.diff | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/debian/patches/0167-fix-group-reading.diff b/debian/patches/0167-fix-group-reading.diff index c7080d5..60e2efc 100644 --- a/debian/patches/0167-fix-group-reading.diff +++ b/debian/patches/0167-fix-group-reading.diff @@ -9,23 +9,20 @@ Try a bit harder. --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp -@@ -829,9 +829,16 @@ - } else if (own == OwnerGroup) { - struct group *gr = 0; - #if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD) -- buf.resize(sysconf(_SC_GETGR_R_SIZE_MAX)); +@@ -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 (unsigned size = sysconf(_SC_GETGR_R_SIZE_MAX); size < 256000; size += size) -+ { -+ buf.resize(size); ++ for (;size_max < 256000; size_max += size_max) { ++ buf.resize(size_max); + struct group entry; -+ // ERANGE indicates that the buffer was too small -+ if (!getgrgid_r(ownerId(own), &entry, buf.data(), buf.size(), &gr) -+ || errno != ERANGE) ++ if (!getgrgid_r(ownerId(own), &entry, buf.data(), buf.size(), &gr) || errno != ERANGE) + break; -+ } + ++ } #else gr = getgrgid(ownerId(own)); #endif |