From cb1902adbf904ff5b63d0a9ceed558783b0c875a Mon Sep 17 00:00:00 2001 From: Warren Levy Date: Thu, 1 Jul 1999 17:01:00 +0000 Subject: [PATCH] [multiple changes] 1999-07-01 Warren Levy * gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength to count and revised comments to match. * gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java. * gnu/gcj/convert/Input_JavaSrc.java (read): ditto. * gnu/gcj/convert/Input_SJIS.java (read): ditto. * gnu/gcj/convert/Input_UTF8.java (read): ditto. * gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto. * gnu/gcj/convert/natInput_SJIS.cc (read): ditto. 1999-07-01 John-Marc Chandonia * gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter properly as count rather than outlength. * java/io/BufferedOutputStream.java (write(byte[],int,int): Flush output on overflow rather than buffer fill. * java/io/BufferedReader.java (fill): Don't clear out the buffer if markPos is 0 and there is still room in the buffer. From-SVN: r27892 --- libjava/ChangeLog | 20 ++++++++++++++++++++ libjava/gnu/gcj/convert/BytesToUnicode.java | 12 +++++++----- libjava/gnu/gcj/convert/Input_8859_1.java | 6 +++--- libjava/gnu/gcj/convert/Input_EUCJIS.java | 2 +- libjava/gnu/gcj/convert/Input_JavaSrc.java | 4 ++-- libjava/gnu/gcj/convert/Input_SJIS.java | 2 +- libjava/gnu/gcj/convert/Input_UTF8.java | 6 +++--- libjava/gnu/gcj/convert/natInput_EUCJIS.cc | 4 ++-- libjava/gnu/gcj/convert/natInput_SJIS.cc | 4 ++-- libjava/java/io/BufferedOutputStream.java | 5 ++++- libjava/java/io/BufferedReader.java | 4 ++-- 11 files changed, 47 insertions(+), 22 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index de894693968..247da09a787 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,23 @@ +1999-07-01 Warren Levy + + * gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength + to count and revised comments to match. + * gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java. + * gnu/gcj/convert/Input_JavaSrc.java (read): ditto. + * gnu/gcj/convert/Input_SJIS.java (read): ditto. + * gnu/gcj/convert/Input_UTF8.java (read): ditto. + * gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto. + * gnu/gcj/convert/natInput_SJIS.cc (read): ditto. + +1999-07-01 John-Marc Chandonia + + * gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter + properly as count rather than outlength. + * java/io/BufferedOutputStream.java (write(byte[],int,int): Flush + output on overflow rather than buffer fill. + * java/io/BufferedReader.java (fill): Don't clear out the buffer + if markPos is 0 and there is still room in the buffer. + 1999-07-01 Andrew Haley * include/i386-signal.h: Replace sigaction () with __sigaction (). diff --git a/libjava/gnu/gcj/convert/BytesToUnicode.java b/libjava/gnu/gcj/convert/BytesToUnicode.java index cfcb813c9cf..6e4d15dab9f 100644 --- a/libjava/gnu/gcj/convert/BytesToUnicode.java +++ b/libjava/gnu/gcj/convert/BytesToUnicode.java @@ -91,15 +91,17 @@ public abstract class BytesToUnicode * bytes start at inbuffer[inpos], and end at inbuffer[inlength-1]. * @param outbuffer buffer for the converted character * @param outpos position in buffer to start putting converted characters - * @param outlength the maximum number of characters to convert + * @param count the maximum number of characters to convert * @return number of chars placed in outbuffer. * Also, this.inpos is incremented by the number of bytes consumed. * * (Note the asymmetry in that the input upper bound is inbuffer[inlength-1], - * while the output upper bound is outbuffer[outpos+outlength-1]. The + * while the output upper bound is outbuffer[outpos+count-1]. The * justification is that inlength is like the count field of a - * BufferedInputStream, while the outlength parameter is like the - * length parameter of a read request.) + * BufferedInputStream, while the count parameter is like the + * length parameter of a read request.) The count parameter is + * also defined to be <= outbuffer.length - outpos (per the specification + * of the length parameter for a read request). */ - public abstract int read (char[] outbuffer, int outpos, int outlength); + public abstract int read (char[] outbuffer, int outpos, int count); } diff --git a/libjava/gnu/gcj/convert/Input_8859_1.java b/libjava/gnu/gcj/convert/Input_8859_1.java index e0d2d5100b4..edc59736cda 100644 --- a/libjava/gnu/gcj/convert/Input_8859_1.java +++ b/libjava/gnu/gcj/convert/Input_8859_1.java @@ -11,21 +11,21 @@ package gnu.gcj.convert; /** * Convert ISO-Latin-1 (8851-1) text to Unicode. * @author Per Bothner - * @date Match 1999. + * @date March 1999. */ public class Input_8859_1 extends BytesToUnicode { public String getName() { return "8859_1"; } - public int read (char[] outbuffer, int outpos, int outlength) + public int read (char[] outbuffer, int outpos, int count) { int origpos = outpos; // Make sure fields of this are in registers. int inpos = this.inpos; byte[] inbuffer = this.inbuffer; int inavail = this.inlength - inpos; - int outavail = outlength - outpos; + int outavail = count; if (outavail > inavail) outavail = inavail; while (--outavail >= 0) diff --git a/libjava/gnu/gcj/convert/Input_EUCJIS.java b/libjava/gnu/gcj/convert/Input_EUCJIS.java index 1531442a40d..12dc34ef0e9 100644 --- a/libjava/gnu/gcj/convert/Input_EUCJIS.java +++ b/libjava/gnu/gcj/convert/Input_EUCJIS.java @@ -21,5 +21,5 @@ public class Input_EUCJIS extends BytesToUnicode int codeset = 0; int first_byte; - public native int read (char[] outbuffer, int outpos, int outlength); + public native int read (char[] outbuffer, int outpos, int count); } diff --git a/libjava/gnu/gcj/convert/Input_JavaSrc.java b/libjava/gnu/gcj/convert/Input_JavaSrc.java index fc2107a591b..68af337e7a9 100644 --- a/libjava/gnu/gcj/convert/Input_JavaSrc.java +++ b/libjava/gnu/gcj/convert/Input_JavaSrc.java @@ -27,14 +27,14 @@ public class Input_JavaSrc extends BytesToUnicode int value; - public int read (char[] outbuffer, int outpos, int outlength) + public int read (char[] outbuffer, int outpos, int count) { int origpos = outpos; for (;;) { if (inpos >= inlength) break; - if (outpos >= outlength) + if (outpos - origpos >= count) break; char b = (char) (inbuffer[inpos++] & 0xFF); switch (state) diff --git a/libjava/gnu/gcj/convert/Input_SJIS.java b/libjava/gnu/gcj/convert/Input_SJIS.java index cdc7c4cb819..50988209fb1 100644 --- a/libjava/gnu/gcj/convert/Input_SJIS.java +++ b/libjava/gnu/gcj/convert/Input_SJIS.java @@ -18,7 +18,7 @@ public class Input_SJIS extends BytesToUnicode { public String getName() { return "SJIS"; } - public native int read (char[] outbuffer, int outpos, int outlength); + public native int read (char[] outbuffer, int outpos, int count); int first_byte; } diff --git a/libjava/gnu/gcj/convert/Input_UTF8.java b/libjava/gnu/gcj/convert/Input_UTF8.java index 0bb5c48a13e..ab1ac518280 100644 --- a/libjava/gnu/gcj/convert/Input_UTF8.java +++ b/libjava/gnu/gcj/convert/Input_UTF8.java @@ -11,7 +11,7 @@ package gnu.gcj.convert; /** * Convert UTF8 to Unicode. * @author Per Bothner - * @date Match 1999. + * @date March 1999. */ public class Input_UTF8 extends BytesToUnicode @@ -22,12 +22,12 @@ public class Input_UTF8 extends BytesToUnicode int partial_bytes_expected = 0; //int suggogate_second = -1; - public int read (char[] outbuffer, int outpos, int outlength) + public int read (char[] outbuffer, int outpos, int count) { int origpos = outpos; for (;;) { - if (outpos >= outlength) + if (outpos - origpos >= count) break; if (inpos >= inlength) break; diff --git a/libjava/gnu/gcj/convert/natInput_EUCJIS.cc b/libjava/gnu/gcj/convert/natInput_EUCJIS.cc index 4c62818464d..8f3b272b7bd 100644 --- a/libjava/gnu/gcj/convert/natInput_EUCJIS.cc +++ b/libjava/gnu/gcj/convert/natInput_EUCJIS.cc @@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94]; jint gnu::gcj::convert::Input_EUCJIS::read(jcharArray outbuffer, jint outpos, - jint outlength) + jint count) { jint start_outpos = outpos; for (;;) { - if (outpos >= outlength) + if (outpos - start_outpos >= count) break; if (inpos >= inlength) break; diff --git a/libjava/gnu/gcj/convert/natInput_SJIS.cc b/libjava/gnu/gcj/convert/natInput_SJIS.cc index 59ad532ec82..5a040b17972 100644 --- a/libjava/gnu/gcj/convert/natInput_SJIS.cc +++ b/libjava/gnu/gcj/convert/natInput_SJIS.cc @@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94]; jint gnu::gcj::convert::Input_SJIS::read(jcharArray outbuffer, jint outpos, - jint outlength) + jint count) { jint start_outpos = outpos; for (;;) { - if (outpos >= outlength) + if (outpos - start_outpos >= count) break; if (inpos >= inlength) break; diff --git a/libjava/java/io/BufferedOutputStream.java b/libjava/java/io/BufferedOutputStream.java index d37ed5d2cb0..3e26592aafe 100644 --- a/libjava/java/io/BufferedOutputStream.java +++ b/libjava/java/io/BufferedOutputStream.java @@ -42,6 +42,7 @@ public class BufferedOutputStream extends FilterOutputStream public synchronized void write (int b) throws IOException { + // Flush output on overflow though JDK (1.2) doc may infer to flush on fill. if (count < buf.length) buf[count++] = (byte) b; else @@ -55,8 +56,10 @@ public class BufferedOutputStream extends FilterOutputStream public synchronized void write (byte[] b, int off, int len) throws IOException, NullPointerException, IndexOutOfBoundsException { + // Flush output on overflow though JDK (1.2) doc may infer to flush on fill. + // If LEN < 0 then the downstream write will fail for us. - if (len >= 0 && count + len < buf.length) + if (len >= 0 && count + len <= buf.length) { System.arraycopy(b, off, buf, count, len); count += len; diff --git a/libjava/java/io/BufferedReader.java b/libjava/java/io/BufferedReader.java index 19e371a24e3..9e9e764734b 100644 --- a/libjava/java/io/BufferedReader.java +++ b/libjava/java/io/BufferedReader.java @@ -197,7 +197,7 @@ public class BufferedReader extends Reader } } - /* Read more data into the buffer. Update pos and limit appropriatly. + /* Read more data into the buffer. Update pos and limit appropriately. Assumes pos==limit initially. May invalidate the mark if read too much. Return number of chars read (never 0), or -1 on eof. */ private int fill() throws IOException @@ -214,7 +214,7 @@ public class BufferedReader extends Reader if (markPos >= 0 && limit == buffer.length) markPos = -1; - if (markPos <= 0) + if (markPos < 0) pos = limit = 0; int count = in.read(buffer, limit, buffer.length - limit); if (count > 0) -- 2.30.2