From 95e370e53e24cf4210bdea07022a7c4d94cd8854 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 22 Oct 2009 17:49:07 +1000 Subject: Use the correct context when resolving alias properties --- src/declarative/qml/qmlvmemetaobject.cpp | 2 -- tests/auto/declarative/qmllanguage/data/NestedAlias.qml | 14 ++++++++++++++ tests/auto/declarative/qmllanguage/data/alias.6.qml | 8 ++++++++ tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp | 10 ++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 tests/auto/declarative/qmllanguage/data/NestedAlias.qml create mode 100644 tests/auto/declarative/qmllanguage/data/alias.6.qml diff --git a/src/declarative/qml/qmlvmemetaobject.cpp b/src/declarative/qml/qmlvmemetaobject.cpp index 62a2a6b..05a6f58 100644 --- a/src/declarative/qml/qmlvmemetaobject.cpp +++ b/src/declarative/qml/qmlvmemetaobject.cpp @@ -191,8 +191,6 @@ int QmlVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a) if (id < metaData->aliasCount) { - QmlContext *ctxt = qmlContext(object); - if (!ctxt) return -1; QmlVMEMetaData::AliasData *d = metaData->aliasData() + id; QmlContextPrivate *ctxtPriv = diff --git a/tests/auto/declarative/qmllanguage/data/NestedAlias.qml b/tests/auto/declarative/qmllanguage/data/NestedAlias.qml new file mode 100644 index 0000000..93a5454 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/NestedAlias.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Object { + property Object o1 + property Object o2 + + property alias a: object2.a + + o1: Object { id: object1 } + o2: Object { + id: object2 + property int a: 1923 + } +} diff --git a/tests/auto/declarative/qmllanguage/data/alias.6.qml b/tests/auto/declarative/qmllanguage/data/alias.6.qml new file mode 100644 index 0000000..aac0ef3 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/alias.6.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +Object { + property Object o; + property alias a: object.a + o: NestedAlias { id: object } +} + diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index 97038e6..d51bbcc 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -680,6 +680,16 @@ void tst_qmllanguage::aliasProperties() delete object; } + + // Nested aliases - this used to cause a crash + { + QmlComponent component(&engine, TEST_FILE("alias.6.qml")); + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("a").toInt(), 1923); + } } // Test that the root element in a composite type can be a Component -- cgit v0.12