minor optimization: don't concatenate strings needlessly
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>
Fri, 31 May 2013 18:04:31 +0000 (20:04 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 26 Aug 2013 21:54:29 +0000 (23:54 +0200)
Change-Id: Iddec1a818ff9f3ad8b12491100883e433e4b8246
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
(cherry picked from qtcreator/12652c20711fd29dcba62b8d5ba71c077d8bd06c)

src/linguist/shared/ioutils.cpp
src/linguist/shared/ioutils.h
src/linguist/shared/qmakeevaluator.cpp

index fd4a18f..e61ed4b 100644 (file)
@@ -88,6 +88,11 @@ bool IoUtils::isRelativePath(const QString &path)
     return true;
 }
 
+QStringRef IoUtils::pathName(const QString &fileName)
+{
+    return fileName.leftRef(fileName.lastIndexOf(QLatin1Char('/')) + 1);
+}
+
 QStringRef IoUtils::fileName(const QString &fileName)
 {
     return fileName.midRef(fileName.lastIndexOf(QLatin1Char('/')) + 1);
index ad2a775..650b26b 100644 (file)
@@ -64,6 +64,7 @@ public:
     static bool exists(const QString &fileName) { return fileType(fileName) != FileNotFound; }
     static bool isRelativePath(const QString &fileName);
     static bool isAbsolutePath(const QString &fileName) { return !isRelativePath(fileName); }
+    static QStringRef pathName(const QString &fileName); // Requires normalized path
     static QStringRef fileName(const QString &fileName); // Requires normalized path
     static QString resolvePath(const QString &baseDir, const QString &fileName);
     static QString shellQuoteUnix(const QString &arg);
index 4bf1ea2..e080c15 100644 (file)
@@ -1862,8 +1862,9 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFeatureFile(
     int start_root = 0;
     QString currFn = currentFileName();
     if (IoUtils::fileName(currFn) == IoUtils::fileName(fn)) {
+        QStringRef currPath = IoUtils::pathName(currFn);
         for (int root = 0; root < m_featureRoots.size(); ++root)
-            if (currFn == m_featureRoots.at(root) + fn) {
+            if (currPath == m_featureRoots.at(root)) {
                 start_root = root + 1;
                 break;
             }