From 0f3e98588f2b60e09a74084dcb26ab9978d814a0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 3 Mar 2021 15:53:12 +0100 Subject: [PATCH] PD: AddressSanitizer: heap-use-after-free Fix crash inside TaskDlgSketchBasedParameters::reject() --- src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp b/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp index 696efbbb56..473fc4fe2c 100644 --- a/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp @@ -263,6 +263,7 @@ bool TaskDlgSketchBasedParameters::accept() { bool TaskDlgSketchBasedParameters::reject() { PartDesign::ProfileBased* pcSketchBased = static_cast(vp->getObject()); + App::DocumentObjectWeakPtrT weakptr(pcSketchBased); // get the Sketch Sketcher::SketchObject *pcSketch = static_cast(pcSketchBased->Profile.getValue()); bool rv; @@ -272,7 +273,7 @@ bool TaskDlgSketchBasedParameters::reject() // if abort command deleted the object the sketch is visible again. // The previous one feature already should be made visible - if (!Gui::Application::Instance->getViewProvider(pcSketchBased)) { + if (weakptr.expired()) { // Make the sketch visible if (pcSketch && Gui::Application::Instance->getViewProvider(pcSketch)) Gui::Application::Instance->getViewProvider(pcSketch)->show();