From 6f978953be314e0136875be20632f9760ed0a499 Mon Sep 17 00:00:00 2001 From: Jefferson Amstutz Date: Wed, 25 Jan 2023 11:58:23 -0600 Subject: [PATCH] fix crash when using a group without a surface array --- libs/helide/scene/Group.cpp | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/libs/helide/scene/Group.cpp b/libs/helide/scene/Group.cpp index 1e74d1dc..0f2f68ad 100644 --- a/libs/helide/scene/Group.cpp +++ b/libs/helide/scene/Group.cpp @@ -75,22 +75,25 @@ void Group::embreeSceneConstruct() rtcReleaseScene(m_embreeScene); m_embreeScene = rtcNewScene(deviceState()->embreeDevice); - uint32_t id = 0; - std::for_each(m_surfaceData->handlesBegin(), - m_surfaceData->handlesEnd(), - [&](Object *o) { - auto *s = (Surface *)o; - if (s && s->isValid()) { - m_surfaces.push_back(s); - rtcAttachGeometryByID( - m_embreeScene, s->geometry()->embreeGeometry(), id); - } else { - reportMessage(ANARI_SEVERITY_DEBUG, - "helide::Group rejecting invalid surface(%p) in building BLS", - s); - } - id++; - }); + if (m_surfaceData) { + uint32_t id = 0; + std::for_each(m_surfaceData->handlesBegin(), + m_surfaceData->handlesEnd(), + [&](Object *o) { + auto *s = (Surface *)o; + if (s && s->isValid()) { + m_surfaces.push_back(s); + rtcAttachGeometryByID( + m_embreeScene, s->geometry()->embreeGeometry(), id); + } else { + reportMessage(ANARI_SEVERITY_DEBUG, + "helide::Group rejecting invalid surface(%p) in building BLS", + s); + } + id++; + }); + } + m_objectUpdates.lastSceneConstruction = helium::newTimeStamp(); m_objectUpdates.lastSceneCommit = 0; embreeSceneCommit();