summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2023-11-15 16:57:23 +0100
committerPaul Lemire <paul.lemire@kdab.com>2023-11-16 10:37:10 +0100
commitff61fbf9cc38e82b53a5a2469e8d22975fe7d8c0 (patch)
tree63c8238ff6647d7f816f5c63a5f8126946704cf2
parent3f891fa2ea81c91ad09c053fa92fbdf0a088c283 (diff)
tst_qmesh: fix heap-use-after-free read errors due to wrong destruction order
Pick-to: 6.6 6.5 Task-number: QTBUG-119137 Change-Id: Ia4e23cb6fa3a16160a70f5beb6963a39bdd5e80b Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--tests/auto/render/qmesh/tst_qmesh.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/tests/auto/render/qmesh/tst_qmesh.cpp b/tests/auto/render/qmesh/tst_qmesh.cpp
index c10890872..cf5899f81 100644
--- a/tests/auto/render/qmesh/tst_qmesh.cpp
+++ b/tests/auto/render/qmesh/tst_qmesh.cpp
@@ -9,6 +9,7 @@ QT_WARNING_DISABLE_DEPRECATED
#include <Qt3DRender/qmesh.h>
#include <Qt3DRender/private/qmesh_p.h>
#include <Qt3DCore/qaspectengine.h>
+#include <Qt3DCore/private/qaspectengine_p.h>
#include <QObject>
#include <QSignalSpy>
#include <Qt3DCore/private/qscene_p.h>
@@ -89,11 +90,11 @@ private Q_SLOTS:
{
// GIVEN
TestArbiter arbiter;
+ Qt3DCore::QAspectEngine engine;
+ Qt3DCore::QScene *scene = Qt3DCore::QAspectEnginePrivate::get(&engine)->m_scene;
Qt3DRender::QMesh mesh;
- arbiter.setArbiterOnNode(&mesh);
- Qt3DCore::QAspectEngine engine;
- Qt3DCore::QScene *scene = new Qt3DCore::QScene(&engine);
+ arbiter.setArbiterOnNode(&mesh);
Qt3DCore::QNodePrivate *meshd = Qt3DCore::QNodePrivate::get(&mesh);
meshd->setScene(scene);
QCoreApplication::processEvents();
@@ -126,11 +127,11 @@ private Q_SLOTS:
{
// GIVEN
TestArbiter arbiter;
+ Qt3DCore::QAspectEngine engine;
+ Qt3DCore::QScene *scene = Qt3DCore::QAspectEnginePrivate::get(&engine)->m_scene;
Qt3DRender::QMesh mesh;
- arbiter.setArbiterOnNode(&mesh);
- Qt3DCore::QAspectEngine engine;
- Qt3DCore::QScene *scene = new Qt3DCore::QScene(&engine);
+ arbiter.setArbiterOnNode(&mesh);
Qt3DCore::QNodePrivate *meshd = Qt3DCore::QNodePrivate::get(&mesh);
meshd->setScene(scene);
QCoreApplication::processEvents();