From 05b4000e01ff5785739617c3069fbe0b0d36a606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Wed, 2 Jan 2013 17:43:39 +0200 Subject: [PATCH] Fixed checking HOME variable return value using isEmpty() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return value of the QFile::decodeName(qgetenv("HOME")); is never null if HOME environment variable is not set. So need to check the return value using isEmpty() instead. Task-number: QTBUG-28912 Change-Id: Ic57b1978d63e99b056cde35ca8cb9d2a07ff8ce8 Reviewed-by: Oswald Buddenhagen Reviewed-by: Samuel Rødal --- src/corelib/io/qfilesystemengine_unix.cpp | 2 +- tests/auto/corelib/io/qdir/tst_qdir.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 2fc7557509..4af01f6730 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -633,7 +633,7 @@ bool QFileSystemEngine::setPermissions(const QFileSystemEntry &entry, QFile::Per QString QFileSystemEngine::homePath() { QString home = QFile::decodeName(qgetenv("HOME")); - if (home.isNull()) + if (home.isEmpty()) home = rootPath(); return QDir::cleanPath(home); } diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp index 7799d40de7..d44ef167b5 100644 --- a/tests/auto/corelib/io/qdir/tst_qdir.cpp +++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp @@ -1344,6 +1344,14 @@ void tst_QDir::homePath() #ifdef Q_OS_UNIX if (strHome.length() > 1) // root dir = "/" QVERIFY(!strHome.endsWith('/')); + + QByteArray envHome = qgetenv("HOME"); +#if !defined(_WRS_KERNEL) // unsetenv is not available on VxWorks DKM mode + unsetenv("HOME"); +#endif + QCOMPARE(QDir::homePath(), QDir::rootPath()); + qputenv("HOME", envHome); + #elif defined(Q_OS_WIN) if (strHome.length() > 3) // root dir = "c:/"; "//" is not really valid... QVERIFY(!strHome.endsWith('/'));