Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio.
[modules/smesh.git] / src / SMESHUtils / SMESH_FreeBorders.cxx
index d098604656bde77db45f5dd3de814c60cdbfd816..f1575ca25122142e0ee7684b4e3829a56d1d6472 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -92,7 +92,7 @@ namespace
       myNodes[0] = node1->Node();
       myNodes[1] = node2->Node();
       myFace     = face;
       myNodes[0] = node1->Node();
       myNodes[1] = node2->Node();
       myFace     = face;
-      setId( ID ); // mesh element ID
+      setID( ID ); // mesh element ID
     }
     bool IsInGroup() const
     {
     }
     bool IsInGroup() const
     {
@@ -444,7 +444,7 @@ void SMESH_MeshAlgos::FindCoincidentFreeBorders(SMDS_Mesh&              mesh,
                                                 CoincidentFreeBorders & foundFreeBordes)
 {
   // find free links
                                                 CoincidentFreeBorders & foundFreeBordes)
 {
   // find free links
-  typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, SMESH_TLink > TLink2FaceMap;
+  typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, SMESH_TLinkHasher > TLink2FaceMap;
   TLink2FaceMap linkMap;
   int nbSharedLinks = 0;
   SMDS_FaceIteratorPtr faceIt = mesh.facesIterator();
   TLink2FaceMap linkMap;
   int nbSharedLinks = 0;
   SMDS_FaceIteratorPtr faceIt = mesh.facesIterator();
@@ -840,7 +840,7 @@ void SMESH_MeshAlgos::FindFreeBorders(SMDS_Mesh&       theMesh,
   bool isManifold = true;
 
   // find free links
   bool isManifold = true;
 
   // find free links
-  typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, SMESH_TLink > TLink2FaceMap;
+  typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, SMESH_TLinkHasher > TLink2FaceMap;
   TLink2FaceMap linkMap;
   int nbSharedLinks = 0;
   SMDS_FaceIteratorPtr faceIt = theMesh.facesIterator();
   TLink2FaceMap linkMap;
   int nbSharedLinks = 0;
   SMDS_FaceIteratorPtr faceIt = theMesh.facesIterator();
@@ -946,7 +946,7 @@ void SMESH_MeshAlgos::FindFreeBorders(SMDS_Mesh&       theMesh,
       ++cnt;
     bordNodes.resize( cnt + 1 );
 
       ++cnt;
     bordNodes.resize( cnt + 1 );
 
-    BEdge* beLast;
+    BEdge* beLast = 0;
     for ( be = borders[i], cnt = 0;
           be && cnt < bordNodes.size()-1;
           be = be->myNext, ++cnt )
     for ( be = borders[i], cnt = 0;
           be && cnt < bordNodes.size()-1;
           be = be->myNext, ++cnt )
@@ -954,6 +954,7 @@ void SMESH_MeshAlgos::FindFreeBorders(SMDS_Mesh&       theMesh,
       bordNodes[ cnt ] = be->myBNode1->Node();
       beLast = be;
     }
       bordNodes[ cnt ] = be->myBNode1->Node();
       beLast = be;
     }
-    bordNodes.back() = beLast->myBNode2->Node();
+    if ( beLast )
+      bordNodes.back() = beLast->myBNode2->Node();
   }
 }
   }
 }