From 79dff6b8cc9f10358fde748d1f18d5d2929868b3 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 11 Jan 2018 11:37:58 -0500 Subject: [PATCH] Fix crash when deleting View with Dimensions - if a Dimension has multiple references to a DrawViewPart (ex vertex-vertex) the Dimension will appear twice in the DVP's InList. This commit ensures that the Dimension is only deleted once when deleting the DVP. --- src/Mod/TechDraw/App/DrawViewPart.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 7b41e981a8..c1aafa492b 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -522,11 +522,14 @@ std::vector DrawViewPart::getGeomHatches() const return result; } +//return *unique* list of Dimensions which reference this DVP std::vector DrawViewPart::getDimensions() const { std::vector result; std::vector children = getInList(); - for (std::vector::iterator it = children.begin(); it != children.end(); ++it) { + std::sort(children.begin(),children.end(),std::less()); + std::vector::iterator newEnd = std::unique(children.begin(),children.end()); + for (std::vector::iterator it = children.begin(); it != newEnd; ++it) { if ((*it)->getTypeId().isDerivedFrom(DrawViewDimension::getClassTypeId())) { TechDraw::DrawViewDimension* dim = dynamic_cast(*it); result.push_back(dim);