From 616cf61f4576f1761387203d6f2cc37a96dfedf9 Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Wed, 14 Apr 2010 18:04:27 +0200
Subject: [PATCH] Include scanning fixes.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Allow include paths with any suffix, and do some sanity check for
existence of paths.

Reviewed-by: Thorbjørn Lindeijer
---
 src/plugins/cpptools/cppmodelmanager.cpp | 49 +++++++++++++-----------
 1 file changed, 27 insertions(+), 22 deletions(-)

diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 8a8d796b117..30b4209dbec 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -1259,6 +1259,10 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
 
         const QString path = paths.takeFirst();
 
+        // Skip non-existing paths
+        if (!QFile::exists(path))
+            continue;
+
         // Skip already scanned paths
         if (entriesInPaths.contains(path))
             continue;
@@ -1269,32 +1273,33 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
         while (i.hasNext()) {
             const QString fileName = i.next();
             const QFileInfo fileInfo = i.fileInfo();
-            const QString suffix = fileInfo.suffix();
-            if (suffix.isEmpty() || suffixes.contains(suffix)) {
-                QString text = fileInfo.fileName();
-                if (fileInfo.isDir()) {
-                    text += QLatin1Char('/');
-
-                    // Also scan subdirectory, but avoid endless recursion with symbolic links
-                    if (fileInfo.isSymLink()) {
-                        QString target = fileInfo.symLinkTarget();
-
-                        // Don't add broken symlinks
-                        if (!QFileInfo(target).exists())
-                            continue;
-
-                        QMap<QString, QStringList>::const_iterator result = entriesInPaths.find(target);
-                        if (result != entriesInPaths.constEnd()) {
-                            entriesInPaths.insert(fileName, result.value());
-                        } else {
-                            paths.append(target);
-                            symlinks.append(SymLink(fileName, target));
-                        }
+            QString text = fileInfo.fileName();
+            if (fileInfo.isDir()) {
+                text += QLatin1Char('/');
+
+                // Also scan subdirectory, but avoid endless recursion with symbolic links
+                if (fileInfo.isSymLink()) {
+                    QString target = fileInfo.symLinkTarget();
+
+                    // Don't add broken symlinks
+                    if (!QFileInfo(target).exists())
+                        continue;
+
+                    QMap<QString, QStringList>::const_iterator result = entriesInPaths.find(target);
+                    if (result != entriesInPaths.constEnd()) {
+                        entriesInPaths.insert(fileName, result.value());
                     } else {
-                        paths.append(fileName);
+                        paths.append(target);
+                        symlinks.append(SymLink(fileName, target));
                     }
+                } else {
+                    paths.append(fileName);
                 }
                 entries.append(text);
+            } else {
+                const QString suffix = fileInfo.suffix();
+                if (suffix.isEmpty() || suffixes.contains(suffix))
+                    entries.append(text);
             }
         }
 
-- 
GitLab