aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-04-07 13:39:08 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-04-07 14:39:22 +0200
commita509bf595da98c954d0bc26d0e60fa6ad74f75fc (patch)
tree6eefa3d21352ecb4693615d7ca2f4eb41bd52158
parenta11f7b66e14b0a342ea3a3d563f777520867a45d (diff)
Fix crash with Properties item as child of Project item.
Change-Id: I5f9868d84447682922fdf97a1a71598cf180549c Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/corelib/language/evaluatorscriptclass.cpp4
-rw-r--r--tests/auto/blackbox/testdata/project-with-properties-item/project.qbs12
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp6
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
4 files changed, 22 insertions, 1 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp
index 757885531..a5f03b81c 100644
--- a/src/lib/corelib/language/evaluatorscriptclass.cpp
+++ b/src/lib/corelib/language/evaluatorscriptclass.cpp
@@ -127,8 +127,10 @@ private:
for (int i = 0; i < value->alternatives().count(); ++i) {
const JSSourceValue::Alternative *alternative = 0;
alternative = &value->alternatives().at(i);
- if (conditionScopeItem != data->item->scope()) {
+ if (!conditionScopeItem) {
conditionScopeItem = data->item->scope();
+ if (!conditionScopeItem)
+ conditionScopeItem = data->item;
conditionScope = data->evaluator->scriptValue(conditionScopeItem);
QBS_ASSERT(conditionScope.isObject(), return);
conditionFileScope = data->evaluator->fileScope(conditionScopeItem->file());
diff --git a/tests/auto/blackbox/testdata/project-with-properties-item/project.qbs b/tests/auto/blackbox/testdata/project-with-properties-item/project.qbs
new file mode 100644
index 000000000..d59a26a94
--- /dev/null
+++ b/tests/auto/blackbox/testdata/project-with-properties-item/project.qbs
@@ -0,0 +1,12 @@
+import qbs 1.0
+
+Project {
+ property string binPath: "/usr/bin"
+ property string libPath: "/usr/lib"
+
+ Properties {
+ condition: qbs.targetOS.contains("osx")
+ binPath: "/Users/boo"
+ libPath: "/Libraries/foo"
+ }
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index c08054877..e033892a1 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -1702,6 +1702,12 @@ void TestBlackbox::qmlDebugging()
}
}
+void TestBlackbox::projectWithPropertiesItem()
+{
+ QDir::setCurrent(testDataDir + "/project-with-properties-item");
+ QCOMPARE(runQbs(), 0);
+}
+
void TestBlackbox::properQuoting()
{
QDir::setCurrent(testDataDir + "/proper quoting");
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 1efcb34b4..a51e8c594 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -123,6 +123,7 @@ private slots:
void mocCppIncluded();
void objC();
void qmlDebugging();
+ void projectWithPropertiesItem();
void properQuoting();
void propertiesBlocks();
void resolve_project_data();