Bug 0020185: EDF SMESH 967 : Anomaly in Merge Nodes.

This commit is contained in:
jfa 2009-03-02 14:57:00 +00:00
parent 14e6b5b1a7
commit 2bd83d5b0b

View File

@ -4846,6 +4846,25 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes)
TNodeNodeMap::iterator nnIt = nodeNodeMap.find( n ); TNodeNodeMap::iterator nnIt = nodeNodeMap.find( n );
if ( nnIt != nodeNodeMap.end() ) { // n sticks if ( nnIt != nodeNodeMap.end() ) { // n sticks
n = (*nnIt).second; 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; iRepl[ nbRepl++ ] = iCur;
} }
curNodes[ iCur ] = n; curNodes[ iCur ] = n;