BufferedReader.java (BufferedReader): Throw IllegalArgumentException when size <= 0.
authorGuilhem Lavaux <guilhem@kaffe.org>
Fri, 26 Dec 2003 22:10:19 +0000 (22:10 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Fri, 26 Dec 2003 22:10:19 +0000 (22:10 +0000)
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

libjava/ChangeLog
libjava/java/io/BufferedReader.java

index fd7b37b6d647ade892a7241f450d67496dd52df8..2a01dceeecf2409926b2f6bee571e6f8da102d07 100644 (file)
@@ -1,3 +1,14 @@
+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.
+
 2003-12-26  Guilhem Lavaux  <guilhem@kaffe.org>
 
        * java/io/FileInputStream.java
index 46c9e417b1be9c5cae4ce61ceeed1c198ffb583c..73fb47c5d347b8ca891611ff43cc9b5138039330 100644 (file)
@@ -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