mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-05 06:10:33 +05:00
+ SMDS_Mesh::CheckMemory(); // PAL16631
This commit is contained in:
parent
f6615d7074
commit
8c740710a0
@ -232,8 +232,12 @@ void SMESH_VisualObjDef::buildPrs()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void SMESH_VisualObjDef::buildNodePrs()
|
void SMESH_VisualObjDef::buildNodePrs()
|
||||||
{
|
{
|
||||||
|
// PAL16631: without swap, bad_alloc is not thrown but hung up and crash instead,
|
||||||
|
// so check remaining memory size for safety
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
vtkPoints* aPoints = vtkPoints::New();
|
vtkPoints* aPoints = vtkPoints::New();
|
||||||
createPoints( aPoints );
|
createPoints( aPoints );
|
||||||
|
SMDS_Mesh::CheckMemory();
|
||||||
myGrid->SetPoints( aPoints );
|
myGrid->SetPoints( aPoints );
|
||||||
aPoints->Delete();
|
aPoints->Delete();
|
||||||
|
|
||||||
@ -293,6 +297,10 @@ void SMESH_VisualObjDef::buildElemPrs()
|
|||||||
for ( int i = 0; i <= 2; i++ )
|
for ( int i = 0; i <= 2; i++ )
|
||||||
nbEnts[ aTypes[ i ] ] = GetEntities( aTypes[ i ], anEnts[ aTypes[ i ] ] );
|
nbEnts[ aTypes[ i ] ] = GetEntities( aTypes[ i ], anEnts[ aTypes[ i ] ] );
|
||||||
|
|
||||||
|
// PAL16631: without swap, bad_alloc is not thrown but hung up and crash instead,
|
||||||
|
// so check remaining memory size for safety
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
|
|
||||||
vtkIdType aCellsSize = 3 * nbEnts[ SMDSAbs_Edge ];
|
vtkIdType aCellsSize = 3 * nbEnts[ SMDSAbs_Edge ];
|
||||||
|
|
||||||
for ( int i = 1; i <= 2; i++ ) // iterate through faces and volumes
|
for ( int i = 1; i <= 2; i++ ) // iterate through faces and volumes
|
||||||
@ -316,16 +324,22 @@ void SMESH_VisualObjDef::buildElemPrs()
|
|||||||
vtkCellArray* aConnectivity = vtkCellArray::New();
|
vtkCellArray* aConnectivity = vtkCellArray::New();
|
||||||
aConnectivity->Allocate( aCellsSize, 0 );
|
aConnectivity->Allocate( aCellsSize, 0 );
|
||||||
|
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
|
|
||||||
vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
|
vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
|
||||||
aCellTypesArray->SetNumberOfComponents( 1 );
|
aCellTypesArray->SetNumberOfComponents( 1 );
|
||||||
aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
|
aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
|
||||||
|
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
|
|
||||||
vtkIdList *anIdList = vtkIdList::New();
|
vtkIdList *anIdList = vtkIdList::New();
|
||||||
vtkIdType iElem = 0;
|
vtkIdType iElem = 0;
|
||||||
|
|
||||||
TConnect aConnect;
|
TConnect aConnect;
|
||||||
aConnect.reserve(VTK_CELL_SIZE);
|
aConnect.reserve(VTK_CELL_SIZE);
|
||||||
|
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
|
|
||||||
for ( int i = 0; i <= 2; i++ ) // iterate through edges, faces and volumes
|
for ( int i = 0; i <= 2; i++ ) // iterate through edges, faces and volumes
|
||||||
{
|
{
|
||||||
if( nbEnts[ aTypes[ i ] ] > 0 )
|
if( nbEnts[ aTypes[ i ] ] > 0 )
|
||||||
@ -426,6 +440,7 @@ void SMESH_VisualObjDef::buildElemPrs()
|
|||||||
iElem++;
|
iElem++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert cells in grid
|
// Insert cells in grid
|
||||||
@ -434,6 +449,8 @@ void SMESH_VisualObjDef::buildElemPrs()
|
|||||||
aCellLocationsArray->SetNumberOfComponents( 1 );
|
aCellLocationsArray->SetNumberOfComponents( 1 );
|
||||||
aCellLocationsArray->SetNumberOfTuples( aNbCells );
|
aCellLocationsArray->SetNumberOfTuples( aNbCells );
|
||||||
|
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
|
|
||||||
aConnectivity->InitTraversal();
|
aConnectivity->InitTraversal();
|
||||||
for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
|
for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
|
||||||
aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
|
aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
|
||||||
@ -444,6 +461,8 @@ void SMESH_VisualObjDef::buildElemPrs()
|
|||||||
aCellTypesArray->Delete();
|
aCellTypesArray->Delete();
|
||||||
aConnectivity->Delete();
|
aConnectivity->Delete();
|
||||||
anIdList->Delete();
|
anIdList->Delete();
|
||||||
|
|
||||||
|
SMDS_Mesh::CheckMemory(); // PAL16631
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -1315,8 +1315,9 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
|
|||||||
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
|
||||||
OCC_CATCH_SIGNALS;
|
OCC_CATCH_SIGNALS;
|
||||||
#endif
|
#endif
|
||||||
MemoryReserve aMemoryReserve;
|
|
||||||
algo->InitComputeError();
|
algo->InitComputeError();
|
||||||
|
MemoryReserve aMemoryReserve;
|
||||||
|
SMDS_Mesh::CheckMemory();
|
||||||
if ( !_father->HasShapeToMesh() ) // no shape
|
if ( !_father->HasShapeToMesh() ) // no shape
|
||||||
{
|
{
|
||||||
SMESH_MesherHelper helper( *_father );
|
SMESH_MesherHelper helper( *_father );
|
||||||
|
Loading…
Reference in New Issue
Block a user