X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_ElementHolder.cxx;h=36edba31a0882cfba0850a04660f32649ab1df81;hp=091359044d87e49642cf0594fbf2db958f7244fd;hb=a11ec0f515b86d30e1617e522a2294d3320cb3c7;hpb=b7a7d49664daa32e1befb558280e13ed0bde37c9 diff --git a/src/SMDS/SMDS_ElementHolder.cxx b/src/SMDS/SMDS_ElementHolder.cxx index 091359044..36edba31a 100644 --- a/src/SMDS/SMDS_ElementHolder.cxx +++ b/src/SMDS/SMDS_ElementHolder.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -37,7 +37,8 @@ SMDS_ElementHolder::SMDS_ElementHolder( const SMDS_Mesh* mesh ) : myMesh( const_cast< SMDS_Mesh* >( mesh )) { - myPtrInMesh = myMesh->myElemHolders.insert( this ).first; + if ( myMesh ) + myPtrInMesh = myMesh->myElemHolders.insert( this ).first; } //======================================================================= @@ -47,7 +48,8 @@ SMDS_ElementHolder::SMDS_ElementHolder( const SMDS_Mesh* mesh ) SMDS_ElementHolder::~SMDS_ElementHolder() { - myMesh->myElemHolders.erase( myPtrInMesh ); + if ( myMesh ) + myMesh->myElemHolders.erase( myPtrInMesh ); } //======================================================================= @@ -57,8 +59,7 @@ SMDS_ElementHolder::~SMDS_ElementHolder() void SMDS_ElementHolder::beforeCompacting() { - int i = 0; - for ( SMDS_ElemIteratorPtr it = getElements(); it->more(); ++i ) + for ( SMDS_ElemIteratorPtr it = getElements(); it->more(); ) { const SMDS_MeshElement* e = it->next(); if ( !e ) continue; @@ -72,7 +73,7 @@ void SMDS_ElementHolder::beforeCompacting() else { myExternalElems.push_back( e ); - myVtkIDs.push_back( -1 * (int)myExternalElems.size() ); + myVtkIDs.push_back( -1 * (vtkIdType) myExternalElems.size() ); } } } @@ -82,8 +83,8 @@ void SMDS_ElementHolder::beforeCompacting() //purpose : restore pointers to elements //======================================================================= -void SMDS_ElementHolder::restoreElements( const std::vector& idNodesOldToNew, - const std::vector& idCellsOldToNew ) +void SMDS_ElementHolder::restoreElements( const std::vector& idNodesOldToNew, + const std::vector& idCellsOldToNew ) { tmpClear(); @@ -92,21 +93,21 @@ void SMDS_ElementHolder::restoreElements( const std::vector& idNodesOldToNe std::vector< bool >::iterator isNode = myIsNode.begin(); for ( size_t i = 0; i < myVtkIDs.size(); ++i, ++isNode ) { - int vtkID = myVtkIDs[i]; + vtkIdType vtkID = myVtkIDs[i]; if ( vtkID < 0 ) { elem = myExternalElems[ (-vtkID)-1 ]; } else if ( *isNode ) { - if ( vtkID < (int)idNodesOldToNew.size() ) + if ( vtkID < (vtkIdType)idNodesOldToNew.size() ) elem = myMesh->FindNodeVtk( idNodesOldToNew[ vtkID ]); else elem = myMesh->FindNodeVtk( vtkID ); } else { - if ( vtkID < (int)idCellsOldToNew.size() ) + if ( vtkID < (vtkIdType)idCellsOldToNew.size() ) elem = myMesh->FindElementVtk( idCellsOldToNew[ vtkID ]); else elem = myMesh->FindElementVtk( vtkID );