diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-04-04 12:46:10 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-04-05 10:42:56 +0200 |
| commit | b29a80aee8a9adaca5ffd2c172670158458c5614 (patch) | |
| tree | cc21ac9c33d172156539a1d8e7759312dd5af58a | |
| parent | 12721ac8f2c34ff8d8c6bfd23c7b979c14fdbf13 (diff) | |
| download | qbs-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.cpp | 2 | ||||
| -rw-r--r-- | src/lib/language/testdata/erroneous/nonexistentouter.qbs | 7 | ||||
| -rw-r--r-- | src/lib/language/tst_language.cpp | 2 |
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() |
