[
https://issues.apache.org/jira/browse/XERCESJ-1421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Costanzo updated XERCESJ-1421:
------------------------------------
Fix Version/s: 2.12.0
> Temporary inconsistent data inside Xerces2-J when removing a first child of a
> node.
> -----------------------------------------------------------------------------------
>
> Key: XERCESJ-1421
> URL: https://issues.apache.org/jira/browse/XERCESJ-1421
> Project: Xerces2-J
> Issue Type: Improvement
> Components: DOM (Level 3 Core)
> Affects Versions: 2.9.1
> Reporter: Ludger Bünger
> Assignee: Michael Glavassevich
> Priority: Minor
> Fix For: 2.12.0
>
> Attachments: PreviousSiblingInconsistentDataPatch.txt
>
>
> When removing a first child, currently there is a local field inside
> ParentNode.internalRemoveChild that contains inconsistent data.
> Since in this specific case the following code still performs correct, there
> is currently no harm done.
> However I think it should be fixed nonetheless since future changes to the
> code might cause problems.
> And here the description of the issue:
> Xerces2-J uses an internal optimization by overloading the
> ChildNode.previousSibling field.
> 1) If a node has a previous sibling, this field contains the previous sibling.
> 2) if a node is the first child of it's parent (and thus has no previous
> sibling), this field is re-used for a different purpose and contains the last
> sibling thus allowing quick access to the end of a node list
> Now ChildNode.internalRemoveNode stores a reference to the previousSibling of
> the removed node for normalization checking purposes in the local field
> oldPreviousSibling.
> However this is done after removal of the node is already done but before
> null'ing of the tree structure fields of the node.
> Since this node has already been removed, the isFirstChild() check fails and
> instead of 'null' the last sibling is stored in the oldPreviousSibling field.
> By chance the normalization checking code still works correct if the previous
> sibling field contains the last sibling instead of the correct value 'null'
> but this still should be fixed.
> See attached patch.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]