make QLibraryInfo return clean paths
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Wed, 20 Apr 2011 14:28:58 +0000 (16:28 +0200)
committerOlivier Goffart <olivier.goffart@nokia.com>
Wed, 11 May 2011 14:39:45 +0000 (16:39 +0200)
as a side effect, don't use QDir for path resolution - it doesn't buy us
anything.

Task-number: QTBUG-1371
Reviewed-by: joerg
(cherry picked from commit 9cd62e4f7b23894a672297f6eebda64cdbd53cb0)

src/corelib/global/qlibraryinfo.cpp

index 180eadf..005e90a 100644 (file)
@@ -450,10 +450,11 @@ QLibraryInfo::location(LibraryLocation loc)
     }
 
     if (QDir::isRelativePath(ret)) {
+        QString baseDir;
         if (loc == PrefixPath) {
             // we make the prefix path absolute to the executable's directory
 #ifdef BOOTSTRAPPING
-            return QDir(QFileInfo(qmake_libraryInfoFile()).absolutePath()).absoluteFilePath(ret);
+            baseDir = QFileInfo(qmake_libraryInfoFile()).absolutePath();
 #else
             if (QCoreApplication::instance()) {
 #ifdef Q_OS_MAC
@@ -466,15 +467,16 @@ QLibraryInfo::location(LibraryLocation loc)
                     }
                 }
 #endif
-                return QDir(QCoreApplication::applicationDirPath()).absoluteFilePath(ret);
+                baseDir = QCoreApplication::applicationDirPath();
             } else {
-                return QDir::current().absoluteFilePath(ret);
+                baseDir = QDir::currentPath();
             }
 #endif
         } else {
             // we make any other path absolute to the prefix directory
-            return QDir(location(PrefixPath)).absoluteFilePath(ret);
+            baseDir = location(PrefixPath);
         }
+        ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret);
     }
     return ret;
 }