diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-04-22 15:48:29 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-24 15:36:44 +0200 |
commit | dfdf8116fee7db9cd52a95053724decc39895aa1 (patch) | |
tree | 3dfb977effe19f040320a3ff33af11f443cdf43a | |
parent | 41f0925dc8e5a9c51cdef02c5d6cd5e134c72391 (diff) |
Fix crash when loading QML that tries to set non-existent group properties
This happens when trying to search for implicit component definitions,
which only makes sense if we have a property cache.
Task-number: QTBUG-38466
Change-Id: I788159453efc24bcda1b9709a1933b49fd54d6a7
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
4 files changed, 8 insertions, 1 deletions
diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp index 30410ac311..6e60bce0e5 100644 --- a/src/qml/compiler/qqmltypecompiler.cpp +++ b/src/qml/compiler/qqmltypecompiler.cpp @@ -1461,7 +1461,8 @@ bool QQmlComponentAndAliasResolver::resolve() isExplicitComponent = true; } if (!isExplicitComponent) { - findAndRegisterImplicitComponents(obj, cache); + if (cache) + findAndRegisterImplicitComponents(obj, cache); continue; } diff --git a/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.errors.txt b/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.errors.txt new file mode 100644 index 0000000000..d62dbd703d --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.errors.txt @@ -0,0 +1 @@ +3:5:Cannot assign to non-existent property "nonExistantGrouped" diff --git a/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.qml b/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.qml new file mode 100644 index 0000000000..3b66a5f6c7 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/nonexistantProperty.7.qml @@ -0,0 +1,4 @@ +import Test 1.0 +MyQmlObject { + nonExistantGrouped.blah: MyQmlObject {} +} diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 87f811cbbc..3561635351 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -345,6 +345,7 @@ void tst_qqmllanguage::errors_data() QTest::newRow("nonexistantProperty.4") << "nonexistantProperty.4.qml" << "nonexistantProperty.4.errors.txt" << false; QTest::newRow("nonexistantProperty.5") << "nonexistantProperty.5.qml" << "nonexistantProperty.5.errors.txt" << false; QTest::newRow("nonexistantProperty.6") << "nonexistantProperty.6.qml" << "nonexistantProperty.6.errors.txt" << false; + QTest::newRow("nonexistantProperty.7") << "nonexistantProperty.7.qml" << "nonexistantProperty.7.errors.txt" << false; QTest::newRow("wrongType (string for int)") << "wrongType.1.qml" << "wrongType.1.errors.txt" << false; QTest::newRow("wrongType (int for bool)") << "wrongType.2.qml" << "wrongType.2.errors.txt" << false; |