Victor (JIRA)
2017-01-18 13:51:26 UTC
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: dev-***@xalan.apache.org
For additional commands, e-mail: dev-***@xalan.apache.org
------------------------------
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: dev-***@xalan.apache.org
For additional commands, e-mail: dev-***@xalan.apache.org