]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/SMDS/SMDS_MeshNode.cxx
Salome HOME
fix SetPosition()
[modules/smesh.git] / src / SMDS / SMDS_MeshNode.cxx
index fd6116368b61892a03e9040fd90dd6a505c419ff..07f1d8d21b4e4565de8f7aec4fef1165787e5263 100644 (file)
@@ -72,12 +72,14 @@ void SMDS_MeshNode::init(int id, int meshId, int shapeId, double x, double y, do
   SMDS_CellLinks *cellLinks = dynamic_cast<SMDS_CellLinks*>(grid->GetCellLinks());
   assert(cellLinks);
   if (myVtkID >= cellLinks->GetLinksSize())
-         cellLinks->ResizeL(myVtkID+SMDS_Mesh::chunkSize);
+          cellLinks->ResizeL(myVtkID+SMDS_Mesh::chunkSize);
 }
 
 SMDS_MeshNode::~SMDS_MeshNode()
 {
   nbNodes--;
+  if ( myPosition && myPosition != SMDS_SpacePosition::originSpacePosition() )
+    delete myPosition, myPosition = 0;
 }
 
 //=======================================================================
@@ -111,7 +113,11 @@ void SMDS_MeshNode::Print(ostream & OS) const
 
 void SMDS_MeshNode::SetPosition(const SMDS_PositionPtr& aPos)
 {
-        myPosition = aPos;
+  if ( myPosition &&
+       myPosition != SMDS_SpacePosition::originSpacePosition() &&
+       myPosition != aPos )
+    delete myPosition;
+  myPosition = aPos;
 }
 
 //=======================================================================
@@ -214,7 +220,7 @@ private:
                            SMDSAbs_ElementType type):
     myMesh(mesh), myCells(cells), myNcells(ncells), myType(type), iter(0)
   {
-       //MESSAGE("myNcells " << myNcells);
+        //MESSAGE("myNcells " << myNcells);
        for (; iter<ncells; iter++)
         {
            int vtkId = myCells[iter];
@@ -225,7 +231,7 @@ private:
                myFiltCells.push_back((SMDS_MeshElement*)elem);
         }
         myNcells = myFiltCells.size();
-               //MESSAGE("myNcells " << myNcells);
+        //MESSAGE("myNcells " << myNcells);
        iter = 0;
         //MESSAGE("SMDS_MeshNode_MyIterator (filter) " << ncells << " " << myNcells);
   }