From 5d21eb614ba0b29152b7f2cf7c934a4e20a51956 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 1 Feb 2017 12:04:41 +0100 Subject: [PATCH] fix crash in ViewProviderGeoFeatureGroupExtension::getLinkedObjects --- .../ViewProviderGeoFeatureGroupExtension.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp index fe9d8f6d8..d8593d4ad 100644 --- a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp +++ b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp @@ -98,7 +98,7 @@ std::vector< App::DocumentObject* > ViewProviderGeoFeatureGroupExtension::getLin if(!obj) return std::vector< App::DocumentObject* >(); - + //we get all linked objects, and that recursively std::vector< App::DocumentObject* > result; std::vector list; @@ -117,16 +117,23 @@ std::vector< App::DocumentObject* > ViewProviderGeoFeatureGroupExtension::getLin result.insert(result.end(), vec.begin(), vec.end()); } } - + //clear all null objects result.erase(std::remove(result.begin(), result.end(), nullptr), result.end()); - + //collect all dependencies of those objects + std::vector< App::DocumentObject* > links; for(App::DocumentObject *obj : result) { auto vec = getLinkedObjects(obj); - result.insert(result.end(), vec.begin(), vec.end()); + links.insert(links.end(), vec.begin(), vec.end()); } - + + if (!links.empty()) { + result.insert(result.end(), links.begin(), links.end()); + std::sort(result.begin(), result.end()); + result.erase(std::unique(result.begin(), result.end()), result.end()); + } + return result; }