Salome HOME
Regression of doc/salome/examples/prism_3d_algo.py
authoreap <eap@opencascade.com>
Thu, 25 Sep 2014 14:01:50 +0000 (18:01 +0400)
committereap <eap@opencascade.com>
Thu, 25 Sep 2014 14:01:50 +0000 (18:01 +0400)
Protection against an infinite loop in StdMeshers_Prism_3D::getWallFaces()

src/StdMeshers/StdMeshers_Prism_3D.cxx

index eb43e8895e7632b95b21dba2f1fd2d1db2dca51b..fbc5704bd593eb2e66cc9112afab729a84c327da 100644 (file)
@@ -987,6 +987,7 @@ bool StdMeshers_Prism_3D::getWallFaces( Prism_3D::TPrismTopo & thePrism,
     // find wall FACEs adjacent to each of thePrism.myWallQuads by the top side EDGE
     if ( totalNbFaces - faceMap.Extent() > 2 )
     {
+      const int nbFoundWalls = faceMap.Extent();
       for ( size_t i = 0; i < thePrism.myWallQuads.size(); ++i )
       {
         StdMeshers_FaceSidePtr topSide = thePrism.myWallQuads[i].back()->side[ QUAD_TOP_SIDE ];
@@ -1013,6 +1014,9 @@ bool StdMeshers_Prism_3D::getWallFaces( Prism_3D::TPrismTopo & thePrism,
             }
           }
       }
+      if ( nbFoundWalls == faceMap.Extent() )
+        return toSM( error("Failed to find wall faces"));
+
     }
   } // while ( totalNbFaces - faceMap.Extent() > 2 )