Victor created XALANJ-2605:
------------------------------
Summary: xsltc trax TransformerImpl does not correctly reset
output properties!
Key: XALANJ-2605
URL: https://issues.apache.org/jira/browse/XALANJ-2605
Project: XalanJ2
Issue Type: Bug
Security Level: No security risk; visible to anyone (Ordinary problems in
Xalan projects. Anybody can view the issue.)
Components: transformation, XSLTC
Affects Versions: 2.7.2, 2.7.1
Environment: Oracle Java 7, 8
Reporter: Victor
Assignee: Steven J. Hathaway
Priority: Critical
There seems to be a bug in
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.reset().
Basically, calling reset() will call setOutputProperties(null), which will in
turn set the value of _properties to _propertiesClone but without cloning the
later, which results on both _properties and _propertiesClone being reference
to the SAME object.
So after reset() is called once on a TransformerImpl, the next time
setOutputProperties(String, String) is called on it, _propertiesClone is
modified, and thus all the future calls to reset() won't work with respect to
output properties!
The solution would be to change the following line:
_properties = _propertiesClone;
to:
_properties = _propertiesClone.clone();
Note that this bug affects Java 7 and Java 8 (xalan 2.7.0), and it seems this
is the default implementation of Transformer returned by the default
TransformerFactory, so it is quite surprising it wasn't discovered before! Did
I misunderstood the contract or reset() maybe?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]