diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 913478c1b5e0..70b72be11159 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -2852,7 +2852,10 @@ int Document::openCommand(const char* sName) void Document::commitCommand() { - getDocument()->commitTransaction(); + auto doc = getDocument(); + if (doc) { + doc->commitTransaction(); + } } void Document::abortCommand() diff --git a/src/Mod/Measure/Gui/TaskMeasure.cpp b/src/Mod/Measure/Gui/TaskMeasure.cpp index 47b9c21b446c..9ff599871b33 100644 --- a/src/Mod/Measure/Gui/TaskMeasure.cpp +++ b/src/Mod/Measure/Gui/TaskMeasure.cpp @@ -258,6 +258,14 @@ TaskMeasure::TaskMeasure() if (auto* doc = Gui::Application::Instance->activeDocument()) { mTargetDoc = doc; + + m_deletedConnection = Gui::Application::Instance->signalDeleteDocument.connect( + [this, doc](const Gui::Document& deletedDoc) { + if (&deletedDoc == doc) { + this->mTargetDoc = nullptr; + } + } + ); mTargetDoc->openCommand("Add Measurement"); }