Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37741806
en ru br
Репозитории ALT
S:4.8.7-alt25
5.1: 4.6.3-alt1.M51.1
4.1: 4.4.3-alt1.M41.1
4.0: 4.3.4-alt5.M40.1
3.0: 4.0.1-alt1
+updates:4.0.1-alt2
+backports:4.2.3-alt7.1.M30
www.altlinux.org/Changes

Группа :: Система/Библиотеки
Пакет: qt4

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0167-fix-group-reading.diff
Скачать


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.
--- src/corelib/io/qfsfileengine_unix.cpp
+++ src/corelib/io/qfsfileengine_unix.cpp
@@ -831,9 +831,16 @@ QString QFSFileEngine::owner(FileOwner o
     } 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));
-        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);
+            struct group entry;
+            // ERANGE indicates that the buffer was too small
+            if (!getgrgid_r(ownerId(own), &entry, buf.data(), buf.size(), &gr)
+                || errno != ERANGE)
+                break;
+        }
+
 #else
         gr = getgrgid(ownerId(own));
 #endif
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin