[TD] avoid memory leaks by using shared_ptr
TD geometry objects are sometimes double deleted. This change uses shared_ptr instead of raw pointers to manage deletions.
This commit is contained in:
committed by
WandererFan
parent
4c9191d489
commit
e91cc8e329
@@ -328,10 +328,10 @@ std::vector<LineSet> DrawGeomHatch::getTrimmedLines(DrawViewPart* source,
|
||||
resultEdges.push_back(edge);
|
||||
}
|
||||
|
||||
std::vector<TechDraw::BaseGeom*> resultGeoms;
|
||||
std::vector<TechDraw::BaseGeomPtr> resultGeoms;
|
||||
int i = 0;
|
||||
for (auto& e: resultEdges) {
|
||||
TechDraw::BaseGeom* base = BaseGeom::baseFactory(e);
|
||||
TechDraw::BaseGeomPtr base = BaseGeom::baseFactory(e);
|
||||
if (base == nullptr) {
|
||||
Base::Console().Log("FAIL - DGH::getTrimmedLines - baseFactory failed for edge: %d\n",i);
|
||||
throw Base::ValueError("DGH::getTrimmedLines - baseFactory failed");
|
||||
@@ -477,10 +477,10 @@ std::vector<LineSet> DrawGeomHatch::getFaceOverlay(int fdx)
|
||||
for (auto& ls: m_lineSets) {
|
||||
PATLineSpec hl = ls.getPATLineSpec();
|
||||
std::vector<TopoDS_Edge> candidates = DrawGeomHatch::makeEdgeOverlay(hl, bBox, ScalePattern.getValue());
|
||||
std::vector<TechDraw::BaseGeom*> resultGeoms;
|
||||
std::vector<TechDraw::BaseGeomPtr> resultGeoms;
|
||||
int i = 0;
|
||||
for (auto& e: candidates) {
|
||||
TechDraw::BaseGeom* base = BaseGeom::baseFactory(e);
|
||||
TechDraw::BaseGeomPtr base = BaseGeom::baseFactory(e);
|
||||
if (base == nullptr) {
|
||||
Base::Console().Log("FAIL - DGH::getFaceOverlay - baseFactory failed for edge: %d\n",i);
|
||||
throw Base::ValueError("DGH::getFaceOverlay - baseFactory failed");
|
||||
|
||||
Reference in New Issue
Block a user