Salome HOME
[bos #26531] [CEA] Shaper tests fail with SEGFAULT
authorjfa <jfa@opencascade.com>
Tue, 19 Oct 2021 13:21:26 +0000 (16:21 +0300)
committerjfa <jfa@opencascade.com>
Tue, 19 Oct 2021 13:21:26 +0000 (16:21 +0300)
src/Selector/Selector_Modify.cpp

index 5bd76c79993b17dceb293263b492b1ba1a235a2f..ad84e825a388bfa31c440c64e406855183529165 100644 (file)
@@ -152,17 +152,18 @@ bool Selector_Modify::select(NCollection_List<Handle(TNaming_NamedShape)>& theMo
   const TopoDS_Shape theContext, const TopoDS_Shape theValue)
 {
   if (theModifList.Extent() > 1) { // searching for the best modification result: by context
+    bool isFound = false;
     Handle(TNaming_NamedShape) aCandidate;
     NCollection_List<Handle(TNaming_NamedShape)>::Iterator aModIter(theModifList);
-    for (; !theModifList.IsEmpty() && aModIter.More(); aModIter.Next()) {
+    for (; aModIter.More() && !isFound; aModIter.Next()) {
       aCandidate = aModIter.Value();
       TDF_Label aFatherLab = aCandidate->Label().Father();
       Handle(TNaming_NamedShape) aFatherNS;
       if (aFatherLab.FindAttribute(TNaming_NamedShape::GetID(), aFatherNS)) {
-        for (TNaming_Iterator anIter(aFatherNS); anIter.More(); anIter.Next()) {
+        for (TNaming_Iterator anIter(aFatherNS);
+             anIter.More() && !isFound; anIter.Next()) {
           if (theContext.IsSame(anIter.NewShape())) { // found the best modification
-            theModifList.Clear();
-            break;
+            isFound = true;
           }
         }
       }