Salome HOME
bos #20646 [CEA] Fix error in polyhedron per solid on pentahedron
[modules/smesh.git] / src / StdMeshers / StdMeshers_PolyhedronPerSolid_3D.cxx
index 6695eea7bc32ae6ac14e428602a5a509288de8a6..b8e1089589087033f005b863e0db28d077f3bc34 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  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
@@ -196,6 +196,9 @@ namespace
     int iSide = trias[0] + 1;
     if ( iSide == trias[1] )
       ++iSide;
+    if (iSide == 5)
+      // use first side (otherwise, out of bounds)
+      iSide = 0;
 
     const SMDS_MeshElement* botFace  = faces[ trias[0]];
     const SMDS_MeshElement* topFace  = faces[ trias[1]];
@@ -296,10 +299,6 @@ namespace
     if ( hexa[1] == -1 )
       return newHexPrism;
 
-    int iSide = hexa[0] + 1;
-    if ( iSide == hexa[1] )
-      ++iSide;
-
     const SMDS_MeshElement* botFace = faces[ hexa[ 0 ]];
     const SMDS_MeshElement* topFace = faces[ hexa[ 1 ]];
     std::vector< const SMDS_MeshNode* > nodes( 24 ); // last 12 is a working buffer