From 62bb8f67c84d0d44cbf8d65f67a8c0a64b3f3dde Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 21 Dec 2021 20:26:22 +0100 Subject: [PATCH] Sketcher: GeometryFacade - Add ownership parameter to factory method --- src/Mod/Sketcher/App/GeometryFacade.cpp | 10 +++++----- src/Mod/Sketcher/App/GeometryFacade.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Mod/Sketcher/App/GeometryFacade.cpp b/src/Mod/Sketcher/App/GeometryFacade.cpp index a456c3a050..ff8c73ed08 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.cpp +++ b/src/Mod/Sketcher/App/GeometryFacade.cpp @@ -43,8 +43,8 @@ GeometryFacade::GeometryFacade(): Geo(nullptr), OwnerGeo(false), SketchGeoExtens } -GeometryFacade::GeometryFacade(const Part::Geometry * geometry) -: Geo(geometry), OwnerGeo(false) +GeometryFacade::GeometryFacade(const Part::Geometry * geometry, bool owner) +: Geo(geometry), OwnerGeo(owner) { assert(geometry != nullptr); // This should never be nullptr, as this constructor is protected @@ -53,14 +53,14 @@ GeometryFacade::GeometryFacade(const Part::Geometry * geometry) GeometryFacade::~GeometryFacade() { - if (OwnerGeo) + if (OwnerGeo && Geo != nullptr) delete Geo; } -std::unique_ptr GeometryFacade::getFacade(Part::Geometry * geometry) +std::unique_ptr GeometryFacade::getFacade(Part::Geometry * geometry, bool owner) { if(geometry != nullptr) - return std::unique_ptr(new GeometryFacade(geometry)); + return std::unique_ptr(new GeometryFacade(geometry, owner)); else return std::unique_ptr(nullptr); //return std::make_unique(geometry); // make_unique has no access to private constructor diff --git a/src/Mod/Sketcher/App/GeometryFacade.h b/src/Mod/Sketcher/App/GeometryFacade.h index c243dcc418..5c7301a7c3 100644 --- a/src/Mod/Sketcher/App/GeometryFacade.h +++ b/src/Mod/Sketcher/App/GeometryFacade.h @@ -100,13 +100,13 @@ class SketcherExport GeometryFacade : public Base::BaseClass, private ISketchGeo TYPESYSTEM_HEADER_WITH_OVERRIDE(); protected: - GeometryFacade(const Part::Geometry * geometry); + GeometryFacade(const Part::Geometry * geometry, bool owner = false); GeometryFacade(); // As TYPESYSTEM requirement friend class GeometryFacadePy; public: // Factory methods - static std::unique_ptr getFacade(Part::Geometry * geometry); + static std::unique_ptr getFacade(Part::Geometry * geometry, bool owner = false); static std::unique_ptr getFacade(const Part::Geometry * geometry); public: // Utility methods