diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-24 17:07:38 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-25 08:41:38 +0000 |
commit | ce154e7834e08a22bc9a292cde3b21c6cb77b660 (patch) | |
tree | 5aab1cbd14e52f54a422e5634d827a9153e18c6d | |
parent | ec64e4f7f69c4b24f0bf28ed94f7dd6bdb424848 (diff) |
Fix crash in wildcard expansion.
The code assumed that an absolute path on Windows always starts with a
drive letter.
Task-number: QBS-862
Change-Id: I3c673f4539dd0967a8b3164522bed51e6dfa667e
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r-- | src/lib/corelib/language/language.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/tst_language.cpp | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index edd9c33db..42b6dff5f 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -1097,7 +1097,7 @@ QSet<QString> SourceWildCards::expandPatterns(const GroupConstPtr &group, QStringList parts = pattern.split(QLatin1Char('/'), QString::SkipEmptyParts); if (FileInfo::isAbsolute(pattern)) { QString rootDir; - if (HostOsInfo::isWindowsHost()) { + if (HostOsInfo::isWindowsHost() && pattern.at(0) != QLatin1Char('/')) { rootDir = parts.takeFirst(); if (!rootDir.endsWith(QLatin1Char('/'))) rootDir.append(QLatin1Char('/')); diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp index 6fd3742dd..b74e268aa 100644 --- a/src/lib/corelib/language/tst_language.cpp +++ b/src/lib/corelib/language/tst_language.cpp @@ -1626,6 +1626,14 @@ void TestLanguage::wildcards_data() << (QStringList() << "*.h") << QStringList() << (QStringList() << "subdir/foo.h" << "subdir/bar.h"); + QTest::newRow(QByteArray("non-existing absolute path")) + << useGroup + << QStringList() + << QString() + << QString("/dir") + << (QStringList() << "*.whatever") + << QStringList() + << QStringList(); } void TestLanguage::wildcards() |