Measure: Fix memory leak in MeasureDistanceInfo

Fixes #15349
This commit is contained in:
wmayer
2024-07-14 12:02:21 +02:00
committed by wwmayer
parent cb31ce5984
commit 07c25e768e
3 changed files with 6 additions and 9 deletions

View File

@@ -410,8 +410,7 @@ MeasureDistanceInfoPtr MeasureDistanceHandler(const App::SubObjectT& subject)
// return a persistent copy of the TopoDS_Shape here as shape will go out of scope at end
BRepBuilderAPI_Copy copy(shape);
const TopoDS_Shape* newShape = new TopoDS_Shape(copy.Shape());
return std::make_shared<MeasureDistanceInfo>(true, newShape);
return std::make_shared<MeasureDistanceInfo>(true, copy.Shape());
}

View File

@@ -37,8 +37,7 @@
#include <App/DocumentObserver.h>
#include <Base/Vector3D.h>
#include <Base/Placement.h>
class TopoDS_Shape;
#include <TopoDS_Shape.hxx>
namespace Part {
@@ -93,14 +92,14 @@ public:
class PartExport MeasureDistanceInfo : public MeasureInfo {
public:
MeasureDistanceInfo() = default;
explicit MeasureDistanceInfo(bool val, const TopoDS_Shape* shp) :
explicit MeasureDistanceInfo(bool val, const TopoDS_Shape& shp) :
MeasureInfo(val), shape(shp) {}
~MeasureDistanceInfo() override = default;
const TopoDS_Shape* getShape() { return shape; }
const TopoDS_Shape& getShape() { return shape; }
private:
const TopoDS_Shape* shape{nullptr};
TopoDS_Shape shape;
};
class PartExport MeasureLengthInfo : public MeasureInfo {