Salome HOME
Bug 0020185: EDF SMESH 967 : Anomaly in Merge Nodes.
authorjfa <jfa@opencascade.com>
Mon, 2 Mar 2009 14:57:49 +0000 (14:57 +0000)
committerjfa <jfa@opencascade.com>
Mon, 2 Mar 2009 14:57:49 +0000 (14:57 +0000)
src/SMESH/SMESH_MeshEditor.cxx

index 487646ed9813c9d02aedb1e27294c9d13367ebf6..77226dbbbfe5eb90d101fa509761d14cd27ba9e3 100644 (file)
@@ -4863,6 +4863,25 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes)
       TNodeNodeMap::iterator nnIt = nodeNodeMap.find( n );
       if ( nnIt != nodeNodeMap.end() ) { // n sticks
         n = (*nnIt).second;
+        // BUG 0020185: begin
+        {
+          bool stopRecur = false;
+          set<const SMDS_MeshNode*> nodesRecur;
+          nodesRecur.insert(n);
+          while (!stopRecur) {
+            TNodeNodeMap::iterator nnIt_i = nodeNodeMap.find( n );
+            if ( nnIt_i != nodeNodeMap.end() ) { // n sticks
+              n = (*nnIt_i).second;
+              if (!nodesRecur.insert(n).second) {
+                // error: recursive dependancy
+                stopRecur = true;
+              }
+            }
+            else
+              stopRecur = true;
+          }
+        }
+        // BUG 0020185: end
         iRepl[ nbRepl++ ] = iCur;
       }
       curNodes[ iCur ] = n;