diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2024-01-17 09:01:20 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-01-17 20:30:47 +0100 |
commit | 9d8e78a2f2661d8a1f2909bfe8a20e15f833af2e (patch) | |
tree | 571b61e916ce6baf1ab92f3dceff942f62f15f20 /tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | |
parent | 1a5f10746ab42527f9a0c7aa170b3f593b31bffb (diff) |
QtQml: Do not call signal handlers on half-deleted objects
Pick-to: 6.7 6.6
Fixes: QTBUG-121022
Change-Id: Icdefd6bef4906700d88eca47c09d0abe54f1eec9
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp')
-rw-r--r-- | tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 35b7e6a535..6680dd1429 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -3910,7 +3910,25 @@ void tst_qqmlecmascript::scriptConnect() engine.clearSingletons(); QMetaObject::invokeMethod(obj.data(), "mySignal", Qt::DirectConnection); QCOMPARE(obj.data()->property("a").toInt(), 1); + } + + { + QQmlComponent component(&engine, testFileUrl("scriptConnect.deletion.qml")); + + QScopedPointer<QObject> obj(component.create()); + QVERIFY2(obj, qPrintable(component.errorString())); + QVERIFY(!obj.isNull()); + + QCOMPARE(obj->property("a"), 0); + + QMetaObject::invokeMethod(obj.data(), "someSignal"); + QCOMPARE(obj->property("a"), 1); + + QCOMPARE(obj->property("b"), 0); + QMetaObject::invokeMethod(obj.data(), "destroyObj", Qt::DirectConnection); + QTRY_COMPARE(obj->property("b"), 1); + QCOMPARE(obj->property("a"), 1); } } |