diff options
author | Antti Määttä <antti.maatta@qt.io> | 2020-10-22 11:12:25 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2020-10-22 12:12:40 +0300 |
commit | b53aeb784f950d7b2a5ebe38ea37c5bb6f456c9c (patch) | |
tree | 1c078b0e65cd43887eb96f3420575849c63b67f2 | |
parent | 24d0ffbdd7af55849d8035a6df472ed6e64adab5 (diff) |
Fix crash when showing a certain presentation in viewerv2.8.0_5151v2.8.0
The presentation needs to have references to non-existing dynamic objects.
This can happen when the effect or custom material have been removed
outside the project and the project gets saved with lastest studio.
Task-number: QT3DS-4195
Change-Id: Icc9f848d5c2280ac0da193b4e4750093ef019361
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Tony Leinonen <tony.leinonen@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
-rw-r--r-- | src/runtimerender/Qt3DSRenderUIPLoader.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/runtimerender/Qt3DSRenderUIPLoader.cpp b/src/runtimerender/Qt3DSRenderUIPLoader.cpp index a63b797..932579b 100644 --- a/src/runtimerender/Qt3DSRenderUIPLoader.cpp +++ b/src/runtimerender/Qt3DSRenderUIPLoader.cpp @@ -1336,6 +1336,8 @@ struct SRenderUIPLoader : public IDOMReferenceResolver case qt3dsdm::ComposerObjectTypes::Effect: { const char8_t *effectClassId; m_Reader.Att("class", effectClassId); + if (!effectClassId) + break; CRegisteredString theStr = m_StrTable.RegisterStr(effectClassId + 1); if (m_EffectSystem.IsEffectRegistered(theStr)) theNewObject = m_EffectSystem.CreateEffectInstance(theStr, m_PresentationAllocator); @@ -1364,6 +1366,8 @@ struct SRenderUIPLoader : public IDOMReferenceResolver case qt3dsdm::ComposerObjectTypes::CustomMaterial: { const char8_t *materialClassId; m_Reader.Att("class", materialClassId); + if (!materialClassId) + break; CRegisteredString theStr = m_StrTable.RegisterStr(materialClassId + 1); if (m_CustomMaterialSystem.IsMaterialRegistered(theStr)) { theNewObject = |