aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog11
-rw-r--r--libjava/java/io/BufferedReader.java19
2 files changed, 27 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index fd7b37b..2a01dce 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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).
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