diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2014-08-06 15:18:08 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@digia.com> | 2014-08-08 06:37:42 +0200 |
commit | ca248a5b8edc4341da66d15186770539a7c16ddd (patch) | |
tree | a12d1a091d91711593ec53b1f8b385ea20f66de5 /tests | |
parent | 5b6be6456f30afd9728abe4fe0588fb88cc9bfaf (diff) |
Fix use-after-free in testcase.
The call to setActive does a deleteLater on the window. Then the QTRY_*
macros run the event loop, thereby deleting the window. So, after
wrapping the window in a QPointer, that pointer must either be null, or
the window shouldn't be visible.
Change-Id: Ib3fc5c5284bd5dae378a0f6a17117b262b9a3687
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquickwindow/tst_qquickwindow.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp index 6c1d46b191..7b23d144a9 100644 --- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp +++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp @@ -1768,14 +1768,14 @@ void tst_qquickwindow::unloadSubWindow() QVERIFY(window); window->show(); QTest::qWaitForWindowExposed(window); - QQuickWindow *transient = Q_NULLPTR; + QPointer<QQuickWindow> transient; QTRY_VERIFY(transient = window->property("transientWindow").value<QQuickWindow*>()); QTest::qWaitForWindowExposed(transient); // Unload the inner window (in nested Loaders) and make sure it doesn't crash QQuickLoader *loader = window->property("loader1").value<QQuickLoader*>(); loader->setActive(false); - QTRY_VERIFY(!transient->isVisible()); + QTRY_VERIFY(transient.isNull() || !transient->isVisible()); } // QTBUG-32004 |