aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io
diff options
context:
space:
mode:
authorGuilhem Lavaux <guilhem@kaffe.org>2003-12-26 22:10:19 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2003-12-26 22:10:19 +0000
commit45d51d7e37ac54da97e497a0946f675be40fe230 (patch)
tree1e52f93d624ad6571a1879b5a0fd35a4d2bc89bd /libjava/java/io
parent3364872d40a49c4c42e29cf7874bd44c8d5583c6 (diff)
downloadgcc-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.java19
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 &lt;&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