Salome HOME
23594: EDF 17213 : crash of salome when loading SMESH or dumping the study
[modules/smesh.git] / src / SMESH / SMESH_Mesh.cxx
index dcdb4f0ac8975d6b16f5f9c9b9e50890adc9be98..e7acf1db4d60ec3e0b970637eadeef3e5e2b59bc 100644 (file)
@@ -361,6 +361,7 @@ double SMESH_Mesh::GetShapeDiagonalSize(const TopoDS_Shape & aShape)
     bool isPrecise = false;
     if ( nbFaces < maxNbFaces )
       try {
+        OCC_CATCH_SIGNALS;
         GEOMUtils::PreciseBoundingBox( aShape, Box );
         isPrecise = true;
       }
@@ -1193,8 +1194,8 @@ void SMESH_Mesh::NotifySubMeshesHypothesisModification(const SMESH_Hypothesis* h
   if ( !GetMeshDS()->IsUsedHypothesis( hyp ))
     return;
 
-  if (_callUp)
-    _callUp->HypothesisModified();
+  if (_callUp && hyp)
+    _callUp->HypothesisModified( hyp->GetID() );
 
   SMESH_Algo *algo;
   const SMESH_HypoFilter* compatibleHypoKind;
@@ -2430,8 +2431,9 @@ bool SMESH_Mesh::SortByMeshOrder(std::vector<SMESH_subMesh*>& theListToSort) con
     {
       TPosInList smPos = find( smBeg, smEnd, smVec[i] );
       if ( smPos != smEnd ) {
-        onlyOrderedList.push_back( smVec[i] );
         sortedPos[ distance( smBeg, smPos )] = smPos;
+        if ( sortedPos.size() > onlyOrderedList.size() )
+          onlyOrderedList.push_back( smVec[i] );
       }
     }
   }