From 4ad8b5255348d245fab127f182d247ac695d6a0a Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 10 Sep 2007 14:20:09 +0000 Subject: [PATCH] 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 --- src/OBJECT/SMESH_Object.cxx | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index 695742269..181de551c 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -199,8 +199,10 @@ void SMESH_VisualObjDef::createPoints( vtkPoints* thePoints ) //================================================================================= 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(); myVTK2SMDSNodes.clear(); mySMDS2VTKElems.clear(); @@ -210,15 +212,15 @@ void SMESH_VisualObjDef::buildPrs() buildNodePrs(); else buildElemPrs(); - } - catch( const std::exception& exc ) - { - INFOS("Follow exception was cought:\n\t"<GetNumberOfCells() = "<GetNumberOfCells() ); if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"/tmp/buildPrs" ); @@ -516,11 +518,14 @@ SMESH_MeshObj::~SMESH_MeshObj() // function : Update // 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 - if ( myClient.Update(theIsClear) ) + if ( myClient.Update(theIsClear) || GetUnstructuredGrid()->GetNumberOfPoints()==0) { buildPrs(); // Fill unstructured grid + return true; + } + return false; } //================================================================================= @@ -675,10 +680,11 @@ void SMESH_SubMeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunc // function : Update // 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(); + return changed; } -- 2.39.2