aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-24 17:07:38 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-25 08:41:38 +0000
commitce154e7834e08a22bc9a292cde3b21c6cb77b660 (patch)
tree5aab1cbd14e52f54a422e5634d827a9153e18c6d
parentec64e4f7f69c4b24f0bf28ed94f7dd6bdb424848 (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.cpp2
-rw-r--r--src/lib/corelib/language/tst_language.cpp8
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()