From 21e3ab647966d0076dcb0fec8cc9fbdce76884d2 Mon Sep 17 00:00:00 2001 From: mkoch Date: Fri, 26 Dec 2003 22:10:19 +0000 Subject: [PATCH] 2003-12-26 Guilhem Lavaux Mark Wielaard * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75041 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 11 +++++++++++ libjava/java/io/BufferedReader.java | 19 ++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index fd7b37b6d64..2a01dceeecf 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,4 +1,15 @@ 2003-12-26 Guilhem Lavaux + Mark Wielaard + + * 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 * java/io/FileInputStream.java (FileInputStream(String)): Call FileInputStream(File). diff --git a/libjava/java/io/BufferedReader.java b/libjava/java/io/BufferedReader.java index 46c9e417b1b..73fb47c5d34 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 -- 2.11.4.GIT