summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-04-04 12:46:10 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-04-05 10:42:56 +0200
commitb29a80aee8a9adaca5ffd2c172670158458c5614 (patch)
treecc21ac9c33d172156539a1d8e7759312dd5af58a
parent12721ac8f2c34ff8d8c6bfd23c7b979c14fdbf13 (diff)
downloadqbs-b29a80aee8a9adaca5ffd2c172670158458c5614.tar.gz
fix crash when accessing nonexistent outer value
Task-number: QBS-248 Change-Id: Idcd8e18559dadf8bc3867dc51c59887ee99633d1 Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/evaluatorscriptclass.cpp2
-rw-r--r--src/lib/language/testdata/erroneous/nonexistentouter.qbs7
-rw-r--r--src/lib/language/tst_language.cpp2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/language/evaluatorscriptclass.cpp b/src/lib/language/evaluatorscriptclass.cpp
index 0dc8365ac..7e78d5c4e 100644
--- a/src/lib/language/evaluatorscriptclass.cpp
+++ b/src/lib/language/evaluatorscriptclass.cpp
@@ -154,7 +154,7 @@ private:
}
setupConvenienceProperty(QLatin1String("base"), &extraScope, baseValue);
}
- if (value->sourceUsesOuter())
+ if (value->sourceUsesOuter() && outerItem)
setupConvenienceProperty(QLatin1String("outer"), &extraScope,
data->evaluator->property(outerItem, *propertyName));
diff --git a/src/lib/language/testdata/erroneous/nonexistentouter.qbs b/src/lib/language/testdata/erroneous/nonexistentouter.qbs
new file mode 100644
index 000000000..6c5899b5d
--- /dev/null
+++ b/src/lib/language/testdata/erroneous/nonexistentouter.qbs
@@ -0,0 +1,7 @@
+import qbs 1.0
+
+Project {
+ Product {
+ name: outer
+ }
+}
diff --git a/src/lib/language/tst_language.cpp b/src/lib/language/tst_language.cpp
index 2160b9c3a..3da4c4b3f 100644
--- a/src/lib/language/tst_language.cpp
+++ b/src/lib/language/tst_language.cpp
@@ -260,6 +260,8 @@ void TestLanguage::erroneousFiles_data()
<< "Multiple ProductModule items in one product are prohibited.";
QTest::newRow("importloop1")
<< "Loop detected when importing";
+ QTest::newRow("nonexistentouter")
+ << "Can't find variable: outer";
}
void TestLanguage::erroneousFiles()