From a57d0b737f2b753efe5195e0ac88d9ebbe92d651 Mon Sep 17 00:00:00 2001 From: mpv Date: Mon, 7 Sep 2015 18:08:27 +0300 Subject: [PATCH] Fix for crash on SALOME-aplpication with sub-part close. --- src/ModelAPI/ModelAPI_Tools.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ModelAPI/ModelAPI_Tools.cpp b/src/ModelAPI/ModelAPI_Tools.cpp index 1da66a845..56c2a0fe6 100755 --- a/src/ModelAPI/ModelAPI_Tools.cpp +++ b/src/ModelAPI/ModelAPI_Tools.cpp @@ -160,11 +160,13 @@ void findRandomColor(std::vector& theValues) ResultPtr findPartResult(const DocumentPtr& theMain, const DocumentPtr& theSub) { - for (int a = theMain->size(ModelAPI_ResultPart::group()) - 1; a >= 0; a--) { - ResultPartPtr aPart = std::dynamic_pointer_cast( - theMain->object(ModelAPI_ResultPart::group(), a)); - if (aPart && aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value() == theSub) { - return aPart; + if (theMain != theSub) { // to optimize and avoid of crash on partset document close (don't touch the sub-document structure) + for (int a = theMain->size(ModelAPI_ResultPart::group()) - 1; a >= 0; a--) { + ResultPartPtr aPart = std::dynamic_pointer_cast( + theMain->object(ModelAPI_ResultPart::group(), a)); + if (aPart && aPart->data()->document(ModelAPI_ResultPart::DOC_REF())->value() == theSub) { + return aPart; + } } } return ResultPtr(); -- 2.39.2