summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2020-11-02 08:25:53 -0600
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-11-02 19:49:43 +0000
commitbff2f634bd4700173c8c0475f21dbbb491105aaf (patch)
tree3745118c20dddae51ae4dad43351cc2b8e556f0a
parentf9a9a6308c7f69ba38c04afc83496a373a1fe6a6 (diff)
Handle invalid entity names in QSceneLoader::component
Return nullptr rather than crashing. Change-Id: Ie11fe798e0bcd3bfdfda053331eabf9ed16e3d94 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 59387766853e64e70efb911772ea5dfe04ff5aad) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/render/io/qsceneloader.cpp2
-rw-r--r--tests/auto/render/qsceneloader/tst_qsceneloader.cpp7
2 files changed, 9 insertions, 0 deletions
diff --git a/src/render/io/qsceneloader.cpp b/src/render/io/qsceneloader.cpp
index 2d53702f6..ce2aa034e 100644
--- a/src/render/io/qsceneloader.cpp
+++ b/src/render/io/qsceneloader.cpp
@@ -343,6 +343,8 @@ QComponent *QSceneLoader::component(const QString &entityName,
QSceneLoader::ComponentType componentType) const
{
QEntity *e = entity(entityName);
+ if (!e)
+ return nullptr;
const QComponentVector components = e->components();
for (auto component : components) {
switch (componentType) {
diff --git a/tests/auto/render/qsceneloader/tst_qsceneloader.cpp b/tests/auto/render/qsceneloader/tst_qsceneloader.cpp
index 79ca6a291..58f9ccced 100644
--- a/tests/auto/render/qsceneloader/tst_qsceneloader.cpp
+++ b/tests/auto/render/qsceneloader/tst_qsceneloader.cpp
@@ -180,6 +180,13 @@ private Q_SLOTS:
QCOMPARE(loader.entity(e3Name), &e3);
QCOMPARE(loader.entity(e4Name), &e4);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::UnknownComponent), nullptr);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::TransformComponent), nullptr);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::GeometryRendererComponent), nullptr);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::MaterialComponent), nullptr);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::LightComponent), nullptr);
+ QCOMPARE(loader.component(e1Name, Qt3DRender::QSceneLoader::CameraLensComponent), nullptr);
+
QCOMPARE(loader.component(e2Name, Qt3DRender::QSceneLoader::UnknownComponent), nullptr);
QCOMPARE(loader.component(e2Name, Qt3DRender::QSceneLoader::TransformComponent), &trans);
QCOMPARE(loader.component(e2Name, Qt3DRender::QSceneLoader::GeometryRendererComponent), nullptr);