summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-02-10 07:03:59 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-02-10 07:03:59 (GMT)
commitae22dc2472f53c0926b01ef390b7fbeeae0d11ad (patch)
tree76223f7f62c59bc78d6c09492dc2ad55aa4f7381
parent69115b14a2b3c2d029dbb0b4e48a5ce9ba1d6470 (diff)
parent46595f3a20e9d1d8483172bdd27d17652c4d302e (diff)
downloadQt-ae22dc2472f53c0926b01ef390b7fbeeae0d11ad.zip
Qt-ae22dc2472f53c0926b01ef390b7fbeeae0d11ad.tar.gz
Qt-ae22dc2472f53c0926b01ef390b7fbeeae0d11ad.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-qml
-rw-r--r--src/declarative/qml/qmlengine.cpp2
-rw-r--r--tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp17
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidID.5.errors.txt2
-rw-r--r--tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp3
4 files changed, 23 insertions, 1 deletions
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 81988ed..372821e 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -542,6 +542,8 @@ void QmlEngine::setContextForObject(QObject *object, QmlContext *context)
data->context = context;
data->nextContextObject = context->d_func()->contextObjects;
+ if (data->nextContextObject)
+ data->nextContextObject->prevContextObject = &data->nextContextObject;
data->prevContextObject = &context->d_func()->contextObjects;
context->d_func()->contextObjects = data;
}
diff --git a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
index 1ba9a52..2182ff4 100644
--- a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
+++ b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
@@ -120,6 +120,7 @@ private slots:
void undefinedResetsProperty();
void listToVariant();
void multiEngineObject();
+ void deletedObject();
void bug1();
@@ -1637,6 +1638,22 @@ void tst_qmlecmascript::multiEngineObject()
delete o1;
}
+// Test that references to QObjects are cleanup when the object is destroyed
+void tst_qmlecmascript::deletedObject()
+{
+ QmlComponent component(&engine, TEST_FILE("deletedObject.qml"));
+
+ QObject *object = component.create();
+
+ QCOMPARE(object->property("test1").toBool(), true);
+ QCOMPARE(object->property("test2").toBool(), true);
+ QCOMPARE(object->property("test3").toBool(), true);
+ QEXPECT_FAIL("", "QTBUG-8077", Continue);
+ QCOMPARE(object->property("test4").toBool(), true);
+
+ delete object;
+}
+
QTEST_MAIN(tst_qmlecmascript)
#include "tst_qmlecmascript.moc"
diff --git a/tests/auto/declarative/qmllanguage/data/invalidID.5.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidID.5.errors.txt
index b0a63a0..c167de3 100644
--- a/tests/auto/declarative/qmllanguage/data/invalidID.5.errors.txt
+++ b/tests/auto/declarative/qmllanguage/data/invalidID.5.errors.txt
@@ -1 +1 @@
-4:9:id conflicts with namespace prefix
+2:20:Invalid import qualifier ID
diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
index 357fc5f..3029501 100644
--- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
+++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
@@ -327,6 +327,9 @@ void tst_qmllanguage::errors()
QFETCH(QString, errorFile);
QFETCH(bool, create);
+ if (file == "invalidID.6.qml")
+ QSKIP("Test disabled until we strictly disallow ids from beginning with uppercase letters", SkipSingle);
+
QmlComponent component(&engine, TEST_FILE(file));
if(create) {