aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp')
-rw-r--r--tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
index 66069c48cb..d5ac20cafc 100644
--- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
+++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
@@ -4219,11 +4219,15 @@ void tst_qquickvisualdatamodel::invalidContext()
engine.rootContext()->setContextProperty("myModel", &model);
QScopedPointer<QQmlContext> context(new QQmlContext(engine.rootContext()));
+ QScopedPointer<QObject> obj;
+ {
+ // The component keeps a reference to the root context as long as the engine lives.
+ // In order to drop the root context we need to drop the component first.
+ QQmlComponent c(&engine, testFileUrl("visualdatamodel.qml"));
+ obj.reset(c.create(context.data()));
+ }
- QQmlComponent c(&engine, testFileUrl("visualdatamodel.qml"));
-
-
- QQmlDelegateModel *visualModel = qobject_cast<QQmlDelegateModel*>(c.create(context.data()));
+ QQmlDelegateModel *visualModel = qobject_cast<QQmlDelegateModel *>(obj.get());
QVERIFY(visualModel);
QQuickItem *item = qobject_cast<QQuickItem*>(visualModel->object(4));