PAL16774,PAL16631(SALOME crash after a mesh computation that failed because of lack of memory)

1)
-  void Update( int theIsClear = true );
+  bool Update( int theIsClear = true );
2) Do not catch here
This commit is contained in:
eap 2007-09-11 06:11:13 +00:00
parent b7b32942ac
commit 0fecea680b

View File

@ -199,8 +199,10 @@ void SMESH_VisualObjDef::createPoints( vtkPoints* thePoints )
//================================================================================= //=================================================================================
void SMESH_VisualObjDef::buildPrs() void SMESH_VisualObjDef::buildPrs()
{ {
try // PAL16631(crash after a mesh computation that failed because of lack of memory):
{ // Catch exceptions upper by stack
// try
// {
mySMDS2VTKNodes.clear(); mySMDS2VTKNodes.clear();
myVTK2SMDSNodes.clear(); myVTK2SMDSNodes.clear();
mySMDS2VTKElems.clear(); mySMDS2VTKElems.clear();
@ -210,15 +212,15 @@ void SMESH_VisualObjDef::buildPrs()
buildNodePrs(); buildNodePrs();
else else
buildElemPrs(); buildElemPrs();
} // }
catch( const std::exception& exc ) // catch( const std::exception& exc )
{ // {
INFOS("Follow exception was cought:\n\t"<<exc.what()); // INFOS("Follow exception was cought:\n\t"<<exc.what());
} // }
catch(...) // catch(...)
{ // {
INFOS("Unknown exception was cought !!!"); // INFOS("Unknown exception was cought !!!");
} // }
if( MYDEBUG ) MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() ); if( MYDEBUG ) MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() );
if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"/tmp/buildPrs" ); if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"/tmp/buildPrs" );
@ -516,11 +518,14 @@ SMESH_MeshObj::~SMESH_MeshObj()
// function : Update // function : Update
// purpose : Update mesh and fill grid with new values if necessary // purpose : Update mesh and fill grid with new values if necessary
//================================================================================= //=================================================================================
void SMESH_MeshObj::Update( int theIsClear ) bool SMESH_MeshObj::Update( int theIsClear )
{ {
// Update SMDS_Mesh on client part // Update SMDS_Mesh on client part
if ( myClient.Update(theIsClear) ) if ( myClient.Update(theIsClear) || GetUnstructuredGrid()->GetNumberOfPoints()==0) {
buildPrs(); // Fill unstructured grid buildPrs(); // Fill unstructured grid
return true;
}
return false;
} }
//================================================================================= //=================================================================================
@ -675,10 +680,11 @@ void SMESH_SubMeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunc
// function : Update // function : Update
// purpose : Update mesh object and fill grid with new values // purpose : Update mesh object and fill grid with new values
//================================================================================= //=================================================================================
void SMESH_SubMeshObj::Update( int theIsClear ) bool SMESH_SubMeshObj::Update( int theIsClear )
{ {
myMeshObj->Update( theIsClear ); bool changed = myMeshObj->Update( theIsClear );
buildPrs(); buildPrs();
return changed;
} }