aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-11-24 16:38:12 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2016-11-25 09:38:35 +0000
commit6b3cd80665069b5fcbeb6513b391c1051131ca00 (patch)
tree0177391d3026759139e6f7f389c7deaff09fc41d
parent3c66ee1ebd49ef6fe828de4af74c9c3a80512340 (diff)
Work around a QDirIterator peculiarity when expanding wildcards
If we set the filter to include files, symbolic links to directories are suppressed (presumably because QFileInfo::isDir() returns true for them). Task-number: QBS-964 Change-Id: Iab96a2371d99e772f3e1664e1e904f899d068116 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/lib/corelib/language/language.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index 86a8cce5d..82d0bb102 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -1141,7 +1141,8 @@ void SourceWildCards::expandPatterns(QSet<QString> &result, const GroupConstPtr
: QDirIterator::NoIteratorFlags;
QDir::Filters itFilters = isDir
? QDir::Dirs
- : QDir::Files;
+ : QDir::Files | QDir::System
+ | QDir::Dirs; // This one is needed to get symbolic links to directories
if (isDir && !FileInfo::isPattern(filePattern))
itFilters |= QDir::Hidden;
@@ -1153,7 +1154,8 @@ void SourceWildCards::expandPatterns(QSet<QString> &result, const GroupConstPtr
const QString filePath = it.next();
if (isQbsBuildDir(it.fileInfo().dir()))
continue; // See above.
- QBS_ASSERT(FileInfo(filePath).isDir() == isDir, break);
+ if (!isDir && it.fileInfo().isDir() && !it.fileInfo().isSymLink())
+ continue;
if (isDir)
expandPatterns(result, group, changed_parts, filePath);
else