Details
Description
When trying to decode a UTF16BE input stream containing characters ot the form \uxx00, for example \u0100 (capital A with macron) the method AbstractIoBuffer.getString(CharsetDecoder) incorrectly interprets the second byte as a null terminator (causing a java.nio.charset.MalformedInputException to be thrown) despite this null byte being mid-character (at an odd index). The attached file, MacronTest, demonstrates the issue and when run produces the following output:
buf = ABC
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at org.apache.mina.core.buffer.AbstractIoBuffer.getString(AbstractIoBuffer.java:1669)
at MacronTest.<init>(MacronTest.java:61)
at MacronTest.main(MacronTest.java:13)
It looks like this issue is also in the 2.2.X branch (3.X/trunk not checked).