diff options
author | Guilhem Lavaux <guilhem@kaffe.org> | 2003-12-26 22:10:19 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-12-26 22:10:19 +0000 |
commit | 45d51d7e37ac54da97e497a0946f675be40fe230 (patch) | |
tree | 1e52f93d624ad6571a1879b5a0fd35a4d2bc89bd /libjava/java/io | |
parent | 3364872d40a49c4c42e29cf7874bd44c8d5583c6 (diff) | |
download | gcc-45d51d7e37ac54da97e497a0946f675be40fe230.zip gcc-45d51d7e37ac54da97e497a0946f675be40fe230.tar.gz gcc-45d51d7e37ac54da97e497a0946f675be40fe230.tar.bz2 |
BufferedReader.java (BufferedReader): Throw IllegalArgumentException when size <= 0.
2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
Mark Wielaard <mark@klomp.org>
* java/io/BufferedReader.java (BufferedReader):
Throw IllegalArgumentException when size <= 0.
(mark): Document and better exception message for negative
readLimit IllegalArgumentException.
(read(char[],int,int)): Throw IndexOutOfBoundsException
if offset and count are not valid regarding buf.
(skip): Throw IllegalArgumentException when count is negative.
Co-Authored-By: Mark Wielaard <mark@klomp.org>
From-SVN: r75041
Diffstat (limited to 'libjava/java/io')
-rw-r--r-- | libjava/java/io/BufferedReader.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libjava/java/io/BufferedReader.java b/libjava/java/io/BufferedReader.java index 46c9e41..73fb47c 100644 --- a/libjava/java/io/BufferedReader.java +++ b/libjava/java/io/BufferedReader.java @@ -106,10 +106,14 @@ public class BufferedReader extends Reader * * @param in The subordinate stream to read from * @param size The buffer size to use + * + * @exception IllegalArgumentException if size <&eq; 0 */ public BufferedReader(Reader in, int size) { super(in.lock); + if (size <= 0) + throw new IllegalArgumentException("Illegal buffer size: " + size); this.in = in; buffer = new char[size]; } @@ -161,11 +165,12 @@ public class BufferedReader extends Reader * becomes invalid * * @exception IOException If an error occurs + * @exception IllegalArgumentException if readLimit is negative. */ public void mark(int readLimit) throws IOException { if (readLimit < 0) - throw new IllegalArgumentException(); + throw new IllegalArgumentException("Read-ahead limit is negative"); synchronized (lock) { @@ -280,9 +285,14 @@ public class BufferedReader extends Reader * @return The actual number of chars read, or -1 if end of stream. * * @exception IOException If an error occurs. + * @exception IndexOutOfBoundsException If offset and count are not + * valid regarding buf. */ public int read(char[] buf, int offset, int count) throws IOException { + if (offset < 0 || offset + count > buf.length || count < 0) + throw new IndexOutOfBoundsException(); + synchronized (lock) { checkStatus(); @@ -487,14 +497,17 @@ public class BufferedReader extends Reader * * @return The actual number of chars skipped. * - * @exception IOException If an error occurs + * @exception IOException If an error occurs. + * @exception IllegalArgumentException If count is negative. */ public long skip(long count) throws IOException { synchronized (lock) { checkStatus(); - if (count <= 0) + if (count < 0) + throw new IllegalArgumentException("skip value is negative"); + if (count == 0) return 0; // Yet again, we need to handle the special case of a readLine // that has a '\r' at the end of the buffer. In this case, we need |