diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2023-11-15 16:57:23 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-11-16 13:41:56 +0000 |
commit | 618f420c7833b413df1c2a682654260e3e5a6900 (patch) | |
tree | 8e1fb4dd869d883499d60acce4d933fce2fbeaf1 | |
parent | f3f007c216742263f00a5292b53ad298014e3feb (diff) |
tst_qmesh: fix heap-use-after-free read errors due to wrong destruction order
Pick-to: 6.5
Task-number: QTBUG-119137
Change-Id: Ia4e23cb6fa3a16160a70f5beb6963a39bdd5e80b
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit ff61fbf9cc38e82b53a5a2469e8d22975fe7d8c0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | tests/auto/render/qmesh/tst_qmesh.cpp | 13 |
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(); |