summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2020-10-22 11:12:25 +0300
committerAntti Määttä <antti.maatta@qt.io>2020-10-22 12:12:40 +0300
commitb53aeb784f950d7b2a5ebe38ea37c5bb6f456c9c (patch)
tree1c078b0e65cd43887eb96f3420575849c63b67f2
parent24d0ffbdd7af55849d8035a6df472ed6e64adab5 (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.cpp4
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 =