DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7410>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7410 Use of tail-pruning is serverly broken Summary: Use of tail-pruning is serverly broken Product: XalanJ2 Version: CurrentCVS Platform: All OS/Version: All Status: NEW Severity: Critical Priority: Other Component: org.apache.xpath AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] The use of tail-pruning from the XPathContext is broken. This may result in the (silent) loss of parts of the result-tree or an ArrayOutOfBoundsException as reported in bugs #7225 and #6833, depending how a broken fragment is used in the stylesheet. The silent loss of information from the resulttree makes the use of 2.3.x versions of xalan-j very dangerous. The problem is caused by the use of XPathContext.pushRTFContext and XPathContext.popRTFContext from the ElemTemplate.execute() method. The current rtfdtm may change between the push and the pop. Causing the respective side-effects to operate to different objects. It is obvious that nothing but disaster can come of this. I don't have a clue whether the effect is due to a faulty xsl use or is just a weird exception, but xalan should administrate it's internals properly or raise some exception. Under the assumption that the stylesheet is not the fault, a suggested fix is to let XPathContext.pushRTFContext return the rtfdtm value on which the rewindmark was pushed. The XPathContext.popRTFContext can then be passed this value for a proper rewindmark pop operation. The rtfdtm stack should probably only be shortened in the pop operation if the passed rtfdtm is the actual top op the stack.
