aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kdab.com>2016-01-25 14:17:55 +0200
committerBogDan Vatra <bogdan@kdab.com>2016-01-25 12:37:19 +0000
commitb83b358634f7b5d5a80f29216233f3b462948922 (patch)
tree1f3304b6ef1a6f77622c088bd14f4e248f56dd42 /tests
parentd6c5c3b529ca49452ecd74a7e139f189c7fb0efc (diff)
Fix don't delete singletons objects owned by C++
Don't delete singletons objects that are created only from C++ and have explicitSetObjectOwnership flag set, explicitSetObjectOwnership flag is set only by QQmlEngine::setObjectOwnership. Task-number: QTBUG-49865 Change-Id: I0ef658c2094e67b5cd9a1585e273144dfcee736a Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
index 1f299c0dbb..71f206ed8f 100644
--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
+++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
@@ -249,6 +249,8 @@ private slots:
void dataAlignment();
+ void deleteSingletons();
+
private:
QQmlEngine engine;
QStringList defaultImportPathList;
@@ -4089,6 +4091,24 @@ void tst_qqmllanguage::dataAlignment()
QVERIFY(sizeof(QQmlVMEMetaData::MethodData) % sizeof(int) == 0);
}
+void tst_qqmllanguage::deleteSingletons()
+{
+ QPointer<QObject> singleton;
+ {
+ QQmlEngine tmpEngine;
+ QQmlComponent component(&tmpEngine, testFile("singletonTest5.qml"));
+ VERIFY_ERRORS(0);
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+ QObject *s1 = NULL;
+ getSingletonInstance(o, "singletonInstance", &s1);
+ QVERIFY(s1 != 0);
+ singleton = s1;
+ QVERIFY(singleton.data() != 0);
+ }
+ QVERIFY(singleton.data() == 0);
+}
+
QTEST_MAIN(tst_qqmllanguage)
#include "tst_qqmllanguage.moc"