RFR JDK-8001750: CharsetDecoder.replacement should not be changeable except via replaceWith method
Xueming Shen
xueming.shen at oracle.com
Fri May 24 18:53:15 UTC 2013
Hi,
Please help review the change for
JDK-8001750: CharsetDecoder.replacement should not be changeable except via replaceWith method
http://cr.openjdk.java.net/~sherman/8001750/webrev/
The bug description is actually not accurate, the replacement field
of CharsetDecoder class is String, not a byte[], so CharsetDecoder
does not have the "defensive copy" issue described. CharsetEncoder
class however appears to have this issue (replacementWith() and
replacement() don't make defensive copy when set/get its internal
data field), which has the byte[] type replacement.
The change is to
(1) return a copy of the replacement when replacement() is invoked
(2) save a defensive copy of the new replacement when set via
replacementWith()
To return a defensive copy of replacement from replacement() may
trigger minor performance "regression" when internal interface
ArrayEncoder.encode() is invoked (from StringCoding and ZipCoder),
so some corresponding updates in UTF8, DoubleByte and HKSCS clases
to save copy of the replacement byte array or byte (SingleByte class
already makes its own copy).
Thanks,
-Sherman
More information about the core-libs-dev
mailing list