diff options
author | Michael Brasser <mbrasser@ford.com> | 2020-11-02 08:25:53 -0600 |
---|---|---|
committer | Michael Brasser <mbrasser@ford.com> | 2020-11-02 12:28:17 -0600 |
commit | 59387766853e64e70efb911772ea5dfe04ff5aad (patch) | |
tree | 8ccee7b380f11ec6e13a0861c2571eaa46a5ac5f | |
parent | 2f4a55e833c970b5bb72f2208ed7b2517324f5ed (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.cpp | 2 | ||||
-rw-r--r-- | tests/auto/render/qsceneloader/tst_qsceneloader.cpp | 7 |
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); |