This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: Patch: java.io.BufferedReader


Hi list,


I commited the attached patch to merge java.io.BufferedReader from classpath 
again.


Michael
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2490
diff -u -b -B -r1.2490 ChangeLog
--- ChangeLog	26 Dec 2003 21:11:03 -0000	1.2490
+++ ChangeLog	26 Dec 2003 22:09:06 -0000
@@ -1,4 +1,15 @@
 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
 	(FileInputStream(String)): Call FileInputStream(File).
Index: java/io/BufferedReader.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/io/BufferedReader.java,v
retrieving revision 1.14
diff -u -b -B -r1.14 BufferedReader.java
--- java/io/BufferedReader.java	14 Jun 2003 05:44:38 -0000	1.14
+++ java/io/BufferedReader.java	26 Dec 2003 22:09:06 -0000
@@ -106,10 +106,14 @@
    *
    * @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 @@
    *        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 @@
    * @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 @@
    *
    * @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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]