[
https://issues.apache.org/jira/browse/SCXML-89?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
joel truher updated SCXML-89:
-----------------------------
Attachment: jira-89.diff
Here's a patch with the fix and the test case.
> 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
> Fix For: 0.9
>
> Attachments: jira-89.diff
>
> Original Estimate: 0h
> Remaining Estimate: 0h
>
> 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.
> {noformat}
> for (Node child = oldNode.getFirstChild();
> child != null;
> child = child.getNextSibling()) {
> oldNode.removeChild(child);
> }
> {noformat}
> This (modified) code finds the next sibling before removal and produces the
> expected result.
> {noformat}
> for (Node child = oldNode.getFirstChild(); child != null;) {
> Node nextChild = child.getNextSibling();
> oldNode.removeChild(child);
> child = nextChild;
> }
> {noformat}
> 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.