diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index 1706f94e6b..ec1bef07c3 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -1085,7 +1085,14 @@ void IfcFile::traverse(IfcUtil::IfcBaseClass* instance, std::set= max_level && max_level > 0) return; - auto attributes = instance->declaration().as_entity()->all_attributes(); + auto entity = instance->declaration().as_entity(); + if (!entity) { + // This is a simple type instance, don't traverse attributes. + return; + } + + auto attributes = entity->all_attributes(); + for (unsigned i = 0; i < attributes.size(); ++i) { Argument* arg = instance->data().getArgument(i);