From 4f28941698ca35e82b9e2b8165e1bda987542fe0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 15 Sep 2019 21:00:21 +0200 Subject: [PATCH] fix possible memory leak --- src/Mod/Sketcher/Gui/CommandCreateGeo.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 50107e5554..908661b604 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -31,6 +31,7 @@ # include # include # include +# include #endif #include @@ -124,14 +125,14 @@ Base::Vector2d GetCircleCenter (const Base::Vector2d &p1, const Base::Vector2d & return Base::Vector2d(x, y); } -void ActivateHandler(Gui::Document *doc,DrawSketchHandler *handler) +void ActivateHandler(Gui::Document *doc, DrawSketchHandler *handler) { + std::unique_ptr ptr(handler); if (doc) { - if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom - (SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch* vp = static_cast (doc->getInEdit()); - vp->purgeHandler(); - vp->activateHandler(handler); + if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { + SketcherGui::ViewProviderSketch* vp = static_cast (doc->getInEdit()); + vp->purgeHandler(); + vp->activateHandler(ptr.release()); } } }