Assign.execute() doesn't remove all children of oldNode (includes fix)
----------------------------------------------------------------------

                 Key: SCXML-89
                 URL: https://issues.apache.org/jira/browse/SCXML-89
             Project: Commons SCXML
          Issue Type: Bug
    Affects Versions: 0.8
         Environment: Ubuntu 7.10 (64 bit), JRE ia32-java6-sun-1.6.0.03
            Reporter: joel truher


This code, from Assign.execute(), seems to remove the oldNode child and *then* 
ask for its next sibling, which returns null.  The result is to remove the 
first child, but leave the other children around, so that the result of 
"Assign" is a concatenation of all-but-one of the old nodes, followed by the 
new nodes.

{quote}
for (Node child = oldNode.getFirstChild();
   child != null;
   child = child.getNextSibling()) {
   oldNode.removeChild(child);
}
{quote}

This (modified) code finds the next sibling before removal and produces the 
expected result.

{quote}
for (Node child = oldNode.getFirstChild(); child != null;) {
   Node nextChild = child.getNextSibling();
   oldNode.removeChild(child);
   child = nextChild;
}
{quote}

I can supply a test case if that would be helpful.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to