]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/Model/Model_Update.cpp
Salome HOME
Fix instability in unit-test checking coincidence with ellipse.
[modules/shaper.git] / src / Model / Model_Update.cpp
index bfd0bc3fce34d174d69672b64718bf07930c558c..d8896e68039a01774be036a7720ca08e9a9b1f8e 100644 (file)
@@ -647,7 +647,12 @@ bool Model_Update::processFeature(FeaturePtr theFeature)
     }
     // searching for the next not used reason
     aProcessedReasons.insert(aReason);
-    aReasons.erase(aReason);
+    // check theFeature is still in the list of modified, because it may be removed sometimes
+    // while updating SketchPlugin_Ellipse
+    if (myModified.find(theFeature) != myModified.end())
+      aReasons.erase(aReason);
+    else
+      break;
   }
   // restore the modified reasons: they will be used in the update of arguments
   if (allSubsUsed) { // restore theFeature in this set
@@ -722,10 +727,8 @@ bool Model_Update::processFeature(FeaturePtr theFeature)
       if (myUpdateBlocked) {
         if (!theFeature->isStable()) {
           aDoExecute = true;
-        } else if (theFeature->results().size()) { // execute only not-results features
-          aDoExecute = !(theFeature->firstResult()->groupName() == ModelAPI_ResultBody::group() ||
-            theFeature->firstResult()->groupName() == ModelAPI_ResultPart::group() ||
-            theFeature->getKind() == "Sketch");
+        } else if (theFeature->results().size()) { // execute only not persistent results features
+          aDoExecute = !theFeature->isPersistentResult();
         } else {
           aDoExecute = aState != ModelAPI_StateInvalidArgument;
         }