summaryrefslogtreecommitdiff
path: root/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch')
-rw-r--r--source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
new file mode 100644
index 00000000..ee1d1913
--- /dev/null
+++ b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-4862.patch
@@ -0,0 +1,29 @@
+diff -up qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp
+--- qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp.QTBUG-4862 2013-06-09 12:02:50.323221694 -0500
++++ qt-everywhere-opensource-src-4.8.5/src/corelib/io/qfilesystemengine_unix.cpp 2013-06-09 12:38:53.140804742 -0500
+@@ -624,6 +624,25 @@ QString QFileSystemEngine::homePath()
+ {
+ QString home = QFile::decodeName(qgetenv("HOME"));
+ if (home.isEmpty())
++ {
++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
++ int size_max = sysconf(_SC_GETPW_R_SIZE_MAX);
++ if (size_max == -1)
++ size_max = 1024;
++ QVarLengthArray<char, 1024> buf(size_max);
++#endif
++ struct passwd *pw = 0;
++ uid_t user_id = getuid();
++ pw = getpwuid(user_id);
++#if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_OPENBSD)
++ struct passwd entry;
++ getpwuid_r(user_id, &entry, buf.data(), buf.size(), &pw);
++#else
++ pw = getpwuid(user_id);
++#endif
++ home = QFile::decodeName(QByteArray(pw->pw_dir));
++ }
++ if (home.isEmpty())
+ home = rootPath();
+ return QDir::cleanPath(home);
+ }