From 091ed3bb8d7c3767d17b037b81811de8ea62ff37 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 22 Nov 2024 17:12:56 +0500 Subject: [PATCH] Fix possible crash removing resource after 1f21e96 --- .../ifcopenshell/api/resource/remove_resource.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/remove_resource.py b/src/ifcopenshell-python/ifcopenshell/api/resource/remove_resource.py index b9c53c54dc..41f3429245 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/resource/remove_resource.py +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/remove_resource.py @@ -46,9 +46,12 @@ def remove_resource(file: ifcopenshell.file, resource: ifcopenshell.entity_insta for inverse in file.get_inverse(settings["resource"]): if inverse.is_a("IfcRelNests"): if inverse.RelatingObject == settings["resource"]: - for related_object in inverse.RelatedObjects: - ifcopenshell.api.resource.remove_resource(file, resource=related_object) + # Remove rel before iteration over objects + # to simplify removal of nested resources and avoid crashes. + related_objects = inverse.RelatedObjects remove_consider_history(inverse) + for related_object in related_objects: + ifcopenshell.api.resource.remove_resource(file, resource=related_object) elif inverse.RelatedObjects == (resource,): remove_consider_history(inverse)