Index: src/main/java/java/nio/charset/CharsetDecoder.java =================================================================== --- src/main/java/java/nio/charset/CharsetDecoder.java (revision 494388) +++ src/main/java/java/nio/charset/CharsetDecoder.java (working copy) @@ -159,10 +159,16 @@ // niochar.00=Characters number for one byte must be positive. throw new IllegalArgumentException(Messages.getString("niochar.00")); //$NON-NLS-1$ } + if (averageCharsPerByte > maxCharsPerByte) { // niochar.01=averageCharsPerByte is greater than maxCharsPerByte throw new IllegalArgumentException(Messages.getString("niochar.01")); //$NON-NLS-1$ } + + if (maxCharsPerByte < 1) { + // niochar.10=maxBytesPerChar cannot be less than 1. + throw new IllegalArgumentException(Messages.getString("niochar.10")); //$NON-NLS-1$ + } averChars = averageCharsPerByte; maxChars = maxCharsPerByte; cs = charset; Index: src/main/java/org/apache/harmony/niochar/internal/nls/messages.properties =================================================================== --- src/main/java/org/apache/harmony/niochar/internal/nls/messages.properties (revision 494388) +++ src/main/java/org/apache/harmony/niochar/internal/nls/messages.properties (working copy) @@ -30,3 +30,4 @@ niochar.0D=Action on unmappable character error cannot be null\! niochar.0E=Replacement is illegal niochar.0F=The illegal charset name is "{0}". +niochar.10=maxBytesPerChar cannot be less than 1. Index: src/test/java/tests/api/java/nio/charset/CharsetDecoderTest.java =================================================================== --- src/test/java/tests/api/java/nio/charset/CharsetDecoderTest.java (revision 494388) +++ src/test/java/tests/api/java/nio/charset/CharsetDecoderTest.java (working copy) @@ -143,6 +143,19 @@ fail("should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { } + + // Regression test for Harmony-2467 + // Illegal Argument: maxBytesPerChar less than 1 + try { + ec = new MockCharsetDecoder(cs, (float) 0.9, (float) 0.9); + fail("should throw IllegalArgumentException"); + } catch (IllegalArgumentException e) { + } + try { + ec = new MockCharsetDecoder(cs, Float.MIN_VALUE, Float.MIN_VALUE); + fail("should throw IllegalArgumentException"); + } catch (IllegalArgumentException e) { + } } /*