From efb10e1b288c9607b9eb7743d8d26a82cbaa8aaa Mon Sep 17 00:00:00 2001 From: pjcreath Date: Thu, 20 Nov 2025 15:04:08 -0500 Subject: [PATCH] Sketcher: prevent undo/redo crash when selected geometry goes away. Fixes #25497 --- src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp | 3 +++ src/Mod/Sketcher/Gui/Utils.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp index e56ba9399c..7079ea7aff 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherBSpline.cpp @@ -359,6 +359,9 @@ bool isCommandNeedingBSplineKnotActive(Gui::Document* doc) } auto* Obj = static_cast(sel[0].getObject()); + if (!Obj) { + return false; + } const std::string& name = names[0]; int geoId {GeoEnum::GeoUndef}; diff --git a/src/Mod/Sketcher/Gui/Utils.cpp b/src/Mod/Sketcher/Gui/Utils.cpp index 592ac74f13..042843e91e 100644 --- a/src/Mod/Sketcher/Gui/Utils.cpp +++ b/src/Mod/Sketcher/Gui/Utils.cpp @@ -355,7 +355,7 @@ bool SketcherGui::isBsplineKnotOrEndPoint( const Part::Geometry* geo = Obj->getGeometry(GeoId); // end points of B-Splines are also knots - if (geo->is() + if (geo && geo->is() && (PosId == Sketcher::PointPos::start || PosId == Sketcher::PointPos::end)) { return true; }