Salome HOME
Fix for the #2716 comment 3 : make smash allow sub-solids selected, but "Apply" butto...
[modules/shaper.git] / src / PartSet / PartSet_Tools.cpp
index 7e030c5aa470a4c8e0eb5850731eede4c11d9ef8..0d91654e57e91d2ebc2bfbff1bdc5115b4a96510 100755 (executable)
@@ -664,7 +664,8 @@ void PartSet_Tools::sendSubFeaturesEvent(const CompositeFeaturePtr& theComposite
     return;
 
   static Events_Loop* aLoop = Events_Loop::loop();
-  for (int i = 0; i < theComposite->numberOfSubs(); i++) {
+  int aNumberOfSubs = theComposite->numberOfSubs();
+  for (int i = 0; i < aNumberOfSubs; i++) {
     FeaturePtr aSubFeature = theComposite->subFeature(i);
     static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get();
     aECreator->sendUpdated(aSubFeature, theEventId);
@@ -756,24 +757,29 @@ ResultPtr PartSet_Tools::createFixedByExternalCenter(
 void PartSet_Tools::getFirstAndLastIndexInFolder(const ObjectPtr& theFolder,
   int& theFirst, int& theLast)
 {
+  theFirst = -1;
+  theLast = -1;
+
   DocumentPtr aDoc = theFolder->document();
   FolderPtr aFolder = std::dynamic_pointer_cast<ModelAPI_Folder>(theFolder);
   if (!aFolder.get())
     return;
 
-  AttributeReferencePtr aFirstFeatAttr = aFolder->data()->reference(ModelAPI_Folder::FIRST_FEATURE_ID());
+  AttributeReferencePtr aFirstFeatAttr =
+    aFolder->data()->reference(ModelAPI_Folder::FIRST_FEATURE_ID());
+  if (!aFirstFeatAttr.get())
+    return;
   FeaturePtr aFirstFeatureInFolder = ModelAPI_Feature::feature(aFirstFeatAttr->value());
-  if (!aFirstFeatureInFolder.get()) {
-    theFirst = -1;
+  if (!aFirstFeatureInFolder.get())
     return;
-  }
+
   AttributeReferencePtr aLastFeatAttr =
     aFolder->data()->reference(ModelAPI_Folder::LAST_FEATURE_ID());
+  if (!aLastFeatAttr.get())
+    return;
   FeaturePtr aLastFeatureInFolder = ModelAPI_Feature::feature(aLastFeatAttr->value());
-  if (!aLastFeatureInFolder.get()) {
-    theLast = -1;
+  if (!aLastFeatureInFolder.get())
     return;
-  }
 
   theFirst = aDoc->index(aFirstFeatureInFolder);
   theLast = aDoc->index(aLastFeatureInFolder);