Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / StdMeshers / StdMeshers_PolyhedronPerSolid_3D.cxx
index eeb19d48e5bbef330b1219af904a5d8c753a972b..25c46a2512454ce9e366b4bf32db5b1a60b41e78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022  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
@@ -577,7 +576,7 @@ bool StdMeshers_PolyhedronPerSolid_3D::Evaluate(SMESH_Mesh&         theMesh,
     case TopAbs_FACE:
     {
       myFaceMesher->Evaluate( theMesh, shape, theResMap );
-      std::vector<int> & quantities = theResMap[ sm ];
+      std::vector<smIdType> & quantities = theResMap[ sm ];
       _quadraticMesh = ( !quantities.empty() &&
                          ( quantities[ SMDSEntity_Quad_Triangle   ] +
                            quantities[ SMDSEntity_Quad_Quadrangle ] +
@@ -587,7 +586,7 @@ bool StdMeshers_PolyhedronPerSolid_3D::Evaluate(SMESH_Mesh&         theMesh,
 
     case TopAbs_SOLID:
     {
-      std::vector<int> & quantities = theResMap[ sm ];
+      std::vector<smIdType> & quantities = theResMap[ sm ];
       quantities.resize( SMDSEntity_Last, 0 );
 
       SMESH_MesherHelper helper( theMesh );