# HG changeset patch # User martin # Date 1414679091 25200 # Node ID 8f2d46041f728182194244ceba89a159977de531 # Parent b409bc51bc23cfd51f2bd04ea919ec83535af9d0 7156085: ArrayIndexOutOfBoundsException throws in UTF8Reader of SAXParser Summary: improve support for supplementary characters Reviewed-by: joehw diff -r b409bc51bc23 -r 8f2d46041f72 jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/io/UTF8Reader.java --- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/io/UTF8Reader.java Wed Jul 05 20:05:30 2017 +0200 +++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/io/UTF8Reader.java Thu Oct 30 07:24:51 2014 -0700 @@ -529,6 +529,16 @@ invalidByte(4, 4, b2); } + // check if output buffer is large enough to hold 2 surrogate chars + if (out + 1 >= ch.length) { + fBuffer[0] = (byte)b0; + fBuffer[1] = (byte)b1; + fBuffer[2] = (byte)b2; + fBuffer[3] = (byte)b3; + fOffset = 4; + return out - offset; + } + // decode bytes into surrogate characters int uuuuu = ((b0 << 2) & 0x001C) | ((b1 >> 4) & 0x0003); if (uuuuu > 0x10) {