From 2fa1672edf54b06a77988d05c183200c232bfb85 Mon Sep 17 00:00:00 2001 From: forbes Date: Sun, 15 Feb 2026 18:45:00 -0600 Subject: [PATCH] fix(assembly): guard onChanged against solver during document restore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During document restore, PropertyLinkList::Restore sets the Group property on AssemblyObject, triggering onChanged → updateSolveStatus → solve → validateNewPlacements. At this point joints reference objects that haven't been restored yet, causing a null pointer dereference (SIGSEGV). Add an isRestoring() guard to skip solver invocation during restore, matching the existing pattern in AssemblyLink::onChanged(). --- src/Mod/Assembly/App/AssemblyObject.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index 95e49d6c6f..ca480c88a5 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -139,6 +139,11 @@ App::DocumentObjectExecReturn* AssemblyObject::execute() void AssemblyObject::onChanged(const App::Property* prop) { + if (App::GetApplication().isRestoring()) { + App::Part::onChanged(prop); + return; + } + if (prop == &Group) { updateSolveStatus(); } -- 2.49.1