From 0132ba39bbb0ad3fa3cdcdabdbaa45f27be27c44 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 9 Jun 2026 21:35:40 +0200 Subject: [PATCH] Catch decomposition errors #8149 --- src/ifcgeom/mapping/mapping.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ifcgeom/mapping/mapping.cpp b/src/ifcgeom/mapping/mapping.cpp index e465743a3d..a380274a50 100644 --- a/src/ifcgeom/mapping/mapping.cpp +++ b/src/ifcgeom/mapping/mapping.cpp @@ -197,8 +197,14 @@ std::vector mapping::find_openings(const express::Base& inst) { // Only aggregation, not nesting is considered. break; } - auto rel_obdef = decomposes.front().as().RelatingObject(); - if (rel_obdef.as() && !rel_obdef.as()) { + express::Base rel_obdef; + try { + rel_obdef = decomposes.front().as().RelatingObject(); + } catch (const std::exception&) { + // exception already logged as part of handling of placement + break; + } + if (rel_obdef && rel_obdef.as() && !rel_obdef.as()) { auto element = rel_obdef.as(); auto rels = element.HasOpenings(); for (auto& rel : rels) {