diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 81cb27fe4a5..27569940330 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -4,6 +4,11 @@ property is not set. Don't call decode with null argument. * java/lang/Long.java (getLong): Likewise. + * java/io/CharArrayReader.java (CharArrayReader): Throw + IllegalArgumentException if constructor arguments are illegal. + (ready): Return false if no more characters can be read. + * java/io/ByteArrayInputStream.java (ByteArrayInputStream): Likewise. + 2001-02-17 Mark Wielaard * java/util/TimerTask.java: New version from Classpath. diff --git a/libjava/java/io/ByteArrayInputStream.java b/libjava/java/io/ByteArrayInputStream.java index 30ba8d7f9da..0d9339363c1 100644 --- a/libjava/java/io/ByteArrayInputStream.java +++ b/libjava/java/io/ByteArrayInputStream.java @@ -40,6 +40,9 @@ public class ByteArrayInputStream extends InputStream public ByteArrayInputStream(byte[] buffer, int offset, int length) { + if (offset < 0 || length < 0 || offset > buffer.length) + throw new IllegalArgumentException(); + buf = buffer; count = offset + length; @@ -47,10 +50,6 @@ public class ByteArrayInputStream extends InputStream count = buf.length; pos = offset; - // TBD: What should we do if pos is neg. or > count? E.g. throw exc. or: - // if (pos < 0 || pos > count) - // pos = 0; - mark = pos; } diff --git a/libjava/java/io/CharArrayReader.java b/libjava/java/io/CharArrayReader.java index 0a77998445f..d67c7c79f5c 100644 --- a/libjava/java/io/CharArrayReader.java +++ b/libjava/java/io/CharArrayReader.java @@ -41,17 +41,16 @@ public class CharArrayReader extends Reader public CharArrayReader(char[] buffer, int offset, int length) { super(); + if (offset < 0 || length < 0 || offset > buffer.length) + throw new IllegalArgumentException(); + buf = buffer; count = offset + length; if (count > buf.length) count = buf.length; - + pos = offset; - // TBD: What should we do if pos is neg. or > count? E.g. throw exc. or: - // if (pos < 0 || pos > count) - // pos = 0; - markedPos = pos; } @@ -116,12 +115,17 @@ public class CharArrayReader extends Reader } } + /** Return true if more characters are available to be read. + * + * @specnote The JDK 1.3 API docs are wrong here. This method will + * return false if there are no more characters available. + */ public boolean ready() throws IOException { if (buf == null) throw new IOException("Stream closed"); - return true; + return (pos < count); } public void reset() throws IOException