Salome HOME
Fix for the issue #1418
authormpv <mpv@opencascade.com>
Tue, 26 Apr 2016 12:40:22 +0000 (15:40 +0300)
committermpv <mpv@opencascade.com>
Tue, 26 Apr 2016 12:40:22 +0000 (15:40 +0300)
src/Model/Model_Update.cpp

index 9125ca0f9b3a99d3ed34de0b178ed513b9716c03..8886c5f02e32102a56b3eea79d454264e420110d 100644 (file)
@@ -80,7 +80,12 @@ bool Model_Update::addModified(FeaturePtr theFeature, FeaturePtr theReason) {
 #ifdef DEB_UPDATE
       std::cout<<"*** Add process on finish "<<theFeature->name()<<std::endl;
 #endif
-    updateArguments(theFeature);
+    static std::set<FeaturePtr> aCurrentlyUpdated;
+    if (aCurrentlyUpdated.find(theFeature) == aCurrentlyUpdated.end()) {
+      aCurrentlyUpdated.insert(theFeature);
+      updateArguments(theFeature);
+      aCurrentlyUpdated.erase(theFeature);
+    }
     if (theFeature->data()->execState() == ModelAPI_StateMustBeUpdated) {
       theFeature->data()->execState(ModelAPI_StateDone);
       static ModelAPI_ValidatorsFactory* aFactory = ModelAPI_Session::get()->validators();