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