tst_QGraphicsItem: fix memleaks in sceneEventFilter()

A view doesn't own the scene it renders, because scenes can be in
multiple views. So if the test function doesn't delete `anotherScene`,
no-one else does, either.

To fix, allocate it on the stack (like `scene`), and not on the heap.

Amends the start of the public history.

Pick-to: 6.8 6.5 5.15
Change-Id: I2f0bfc5dfafd68a347553335f5ac5f2d081d56ad
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 0617d177ac9d584ed6e5298e0fbe1a78ea682ce9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-03-24 09:02:38 +01:00 committed by Qt Cherry-pick Bot
parent 2cb473b266
commit e926cbf218

View File

@ -5002,12 +5002,12 @@ void tst_QGraphicsItem::sceneEventFilter()
//Let check if the items are correctly removed from the sceneEventFilters array
//to avoid stale pointers.
QGraphicsView gv;
QGraphicsScene *anotherScene = new QGraphicsScene;
QGraphicsTextItem *ti = anotherScene->addText("This is a test #1");
QGraphicsScene anotherScene;
QGraphicsTextItem *ti = anotherScene.addText("This is a test #1");
ti->moveBy(50, 50);
QGraphicsTextItem *ti2 = anotherScene->addText("This is a test #2");
QGraphicsTextItem *ti3 = anotherScene->addText("This is a test #3");
gv.setScene(anotherScene);
QGraphicsTextItem *ti2 = anotherScene.addText("This is a test #2");
QGraphicsTextItem *ti3 = anotherScene.addText("This is a test #3");
gv.setScene(&anotherScene);
gv.show();
QVERIFY(QTest::qWaitForWindowExposed(&gv));
ti->installSceneEventFilter(ti2);