Salome HOME
NPAL15894 (Projection 2D doesn't work) T_PAL_15278
authoreap <eap@opencascade.com>
Tue, 8 May 2007 10:34:01 +0000 (10:34 +0000)
committereap <eap@opencascade.com>
Tue, 8 May 2007 10:34:01 +0000 (10:34 +0000)
    protect form SIGSEGV if not all mathcing nodes found

src/StdMeshers/StdMeshers_RadialPrism_3D.cxx

index c83bff5250a62d5bf73eee982f1b4d511d9f5b41..89946a7aa7668744031b2df0fe35c4cd118950b0 100644 (file)
@@ -222,12 +222,18 @@ bool StdMeshers_RadialPrism_3D::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& a
       vector< const TNodeColumn* > columns( nbNodes );
       for ( int i = 0; i < nbNodes; ++i )
       {
-        const SMDS_MeshNode* n = face->GetNode( i );
-        TNode2ColumnMap::iterator n_col = node2columnMap.find( n );
-        if ( n_col != node2columnMap.end() )
+        const SMDS_MeshNode* nIn = face->GetNode( i );
+        TNode2ColumnMap::iterator n_col = node2columnMap.find( nIn );
+        if ( n_col != node2columnMap.end() ) {
           columns[ i ] = & n_col->second;
-        else
-          columns[ i ] = makeNodeColumn( node2columnMap, n, nodeIn2OutMap[ n ] );
+        }
+        else {
+          TNodeNodeMap::iterator nInOut = nodeIn2OutMap.find( nIn );
+          if ( nInOut == nodeIn2OutMap.end() )
+            RETURN_BAD_RESULT("No matching node for "<< nIn->GetID() <<
+                              " in face "<< face->GetID());
+          columns[ i ] = makeNodeColumn( node2columnMap, nIn, nInOut->second );
+        }
       }
 
       StdMeshers_Prism_3D::AddPrisms( columns, myHelper );