]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Fix for the issue #665
authormpv <mpv@opencascade.com>
Wed, 24 Jun 2015 09:17:09 +0000 (12:17 +0300)
committermpv <mpv@opencascade.com>
Wed, 24 Jun 2015 09:17:09 +0000 (12:17 +0300)
src/InitializationPlugin/InitializationPlugin_Plugin.cpp
src/ModelAPI/ModelAPI_Feature.cpp

index f3ef02d96f74386779af970e047e0496363f9433..654b9c446e02cd44506916a8b6e5ac16241166f0 100644 (file)
@@ -102,6 +102,10 @@ FeaturePtr InitializationPlugin_Plugin::createPlane(DocumentPtr theDoc, double t
   // the plane should be executed in order to build the feature result immediatelly
   // the results are to be hidden in the plugin
   aPlane->execute();
+  // this flag is needed here to avoid setting it inside of the next transaction
+  // (may cause crash on redo of the first transaction in OCAF)
+  aPlane->data()->execState(ModelAPI_StateDone);
+  aPlane->firstResult()->data()->execState(ModelAPI_StateDone);
 
   return aPlane;
 }
@@ -118,6 +122,8 @@ FeaturePtr InitializationPlugin_Plugin::createPoint(DocumentPtr theDoc)
   // the point should be executed in order to build the feature result immediatelly
   // the results are to be hidden in the plugin
   aPoint->execute();
+  aPoint->data()->execState(ModelAPI_StateDone);
+  aPoint->firstResult()->data()->execState(ModelAPI_StateDone);
 
   return aPoint;
 }
index 3ba486be3b2ba2c4fb1f15fc8f614b8a67e541bd..3c78c82d0a254403579b4068b47877724efb30d6 100644 (file)
@@ -146,7 +146,8 @@ void ModelAPI_Feature::erase()
   while (!myResults.empty()) {  // remove one by one with messages
     std::shared_ptr<ModelAPI_Result> aRes = *(myResults.begin());
     aRes->setDisabled(aRes, true); // to avoid activation of the Part result
-    myResults.erase(myResults.begin());
+    if (!myResults.empty()) // disabling result may erase the list (on undo of Part, issue 665)
+      myResults.erase(myResults.begin());
   }
   ModelAPI_Object::erase();
 }