Index: C:/Clear/workspace_harmony/nio_char/src/main/java/java/nio/charset/CharsetDecoder.java =================================================================== --- C:/Clear/workspace_harmony/nio_char/src/main/java/java/nio/charset/CharsetDecoder.java (revision 378449) +++ C:/Clear/workspace_harmony/nio_char/src/main/java/java/nio/charset/CharsetDecoder.java (working copy) @@ -227,8 +227,9 @@ reset(); int length = (int) (in.remaining() * averChars); CharBuffer output = CharBuffer.allocate(length); + CoderResult result = null; while (true) { - CoderResult result = decode(in, output, false); + result = decode(in, output, false); if (result.isUnderflow()) { break; } else if (result.isMalformed() @@ -240,7 +241,14 @@ } output = allocateMore(output); } - decode(in, output, true); + result = decode(in, output, true); + if (result.isMalformed() + && malformAction == CodingErrorAction.REPORT) { + throw new MalformedInputException(result.length()); + } else if (result.isUnmappable() + && unmapAction == CodingErrorAction.REPORT) { + throw new UnmappableCharacterException(result.length()); + } while (flush(output) != CoderResult.UNDERFLOW) { output = allocateMore(output); }