summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <mbrasser@ford.com>2020-11-02 08:25:53 -0600
committerMichael Brasser <mbrasser@ford.com>2020-11-02 12:28:17 -0600
commit59387766853e64e70efb911772ea5dfe04ff5aad (patch)
tree8ccee7b380f11ec6e13a0861c2571eaa46a5ac5f
parent2f4a55e833c970b5bb72f2208ed7b2517324f5ed (diff)
Handle invalid entity names in QSceneLoader::component
Return nullptr rather than crashing. Pick-to: 5.15 Change-Id: Ie11fe798e0bcd3bfdfda053331eabf9ed16e3d94 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-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 eb0bcd155..5dd690b49 100644
--- a/src/render/io/qsceneloader.cpp
+++ b/src/render/io/qsceneloader.cpp
@@ -338,6 +338,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 b237f2dd4..c12d72db6 100644
--- a/tests/auto/render/qsceneloader/tst_qsceneloader.cpp
+++ b/tests/auto/render/qsceneloader/tst_qsceneloader.cpp
@@ -122,6 +122,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);