This is the mail archive of the
java-patches@sourceware.cygnus.com
mailing list for the Java project.
java.io and gnu.gcj.convert Changes
- To: java-patches@sourceware.cygnus.com
- Subject: java.io and gnu.gcj.convert Changes
- From: Warren Levy <warrenl@cygnus.com>
- Date: Thu, 1 Jul 1999 17:11:07 -0700 (PDT)
- cc: jmc@cmpharm.ucsf.edu
I applied the following patches from John-Marc Chandonia (and added my
own to cover the rest of the BytesToUnicode subclasses) to the main
trunk. They were not applied to the 2.95 branch since they did not
fix a porting problem.
Here's the ChangeLog entry and diff:
1999-07-01 Warren Levy <warrenl@cygnus.com>
* 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 <jmc@cmpharm.ucsf.edu>
* 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.
Index: gnu/gcj/convert/BytesToUnicode.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/BytesToUnicode.java,v
retrieving revision 1.3
diff -u -p -r1.3 BytesToUnicode.java
--- BytesToUnicode.java 1999/04/16 23:28:52 1.3
+++ BytesToUnicode.java 1999/07/01 23:28:34
@@ -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);
}
Index: gnu/gcj/convert/Input_8859_1.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/Input_8859_1.java,v
retrieving revision 1.3
diff -u -p -r1.3 Input_8859_1.java
--- Input_8859_1.java 1999/04/17 00:25:16 1.3
+++ Input_8859_1.java 1999/07/01 23:28:34
@@ -11,21 +11,21 @@ package gnu.gcj.convert;
/**
* Convert ISO-Latin-1 (8851-1) text to Unicode.
* @author Per Bothner <bothner@cygnus.com>
- * @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)
Index: gnu/gcj/convert/Input_EUCJIS.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/Input_EUCJIS.java,v
retrieving revision 1.3
diff -u -p -r1.3 Input_EUCJIS.java
--- Input_EUCJIS.java 1999/04/17 00:25:16 1.3
+++ Input_EUCJIS.java 1999/07/01 23:28:34
@@ -21,5 +21,5 @@ public class Input_EUCJIS extends BytesT
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);
}
Index: gnu/gcj/convert/Input_JavaSrc.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/Input_JavaSrc.java,v
retrieving revision 1.1
diff -u -p -r1.1 Input_JavaSrc.java
--- Input_JavaSrc.java 1999/04/17 00:25:16 1.1
+++ Input_JavaSrc.java 1999/07/01 23:28:34
@@ -27,14 +27,14 @@ public class Input_JavaSrc extends Bytes
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)
Index: gnu/gcj/convert/Input_SJIS.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/Input_SJIS.java,v
retrieving revision 1.1
diff -u -p -r1.1 Input_SJIS.java
--- Input_SJIS.java 1999/04/17 00:25:16 1.1
+++ Input_SJIS.java 1999/07/01 23:28:34
@@ -18,7 +18,7 @@ public class Input_SJIS extends BytesToU
{
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;
}
Index: gnu/gcj/convert/Input_UTF8.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/Input_UTF8.java,v
retrieving revision 1.3
diff -u -p -r1.3 Input_UTF8.java
--- Input_UTF8.java 1999/04/17 00:19:37 1.3
+++ Input_UTF8.java 1999/07/01 23:28:34
@@ -11,7 +11,7 @@ package gnu.gcj.convert;
/**
* Convert UTF8 to Unicode.
* @author Per Bothner <bothner@cygnus.com>
- * @date Match 1999.
+ * @date March 1999.
*/
public class Input_UTF8 extends BytesToUnicode
@@ -22,12 +22,12 @@ public class Input_UTF8 extends BytesToU
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;
Index: gnu/gcj/convert/natInput_EUCJIS.cc
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/natInput_EUCJIS.cc,v
retrieving revision 1.3
diff -u -p -r1.3 natInput_EUCJIS.cc
--- natInput_EUCJIS.cc 1999/04/17 00:25:16 1.3
+++ natInput_EUCJIS.cc 1999/07/01 23:28:34
@@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode
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;
Index: gnu/gcj/convert/natInput_SJIS.cc
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/gnu/gcj/convert/natInput_SJIS.cc,v
retrieving revision 1.1
diff -u -p -r1.1 natInput_SJIS.cc
--- natInput_SJIS.cc 1999/04/17 00:25:16 1.1
+++ natInput_SJIS.cc 1999/07/01 23:28:34
@@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode
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;
Index: java/io/BufferedOutputStream.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/java/io/BufferedOutputStream.java,v
retrieving revision 1.4
diff -u -p -r1.4 BufferedOutputStream.java
--- BufferedOutputStream.java 1999/03/02 22:26:55 1.4
+++ BufferedOutputStream.java 1999/07/01 23:28:34
@@ -42,6 +42,7 @@ public class BufferedOutputStream extend
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 extend
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;
Index: java/io/BufferedReader.java
===================================================================
RCS file: /cvs/cvsfiles/devo/libjava/java/io/BufferedReader.java,v
retrieving revision 1.6
diff -u -p -r1.6 BufferedReader.java
--- BufferedReader.java 1999/03/02 22:26:55 1.6
+++ BufferedReader.java 1999/07/01 23:28:35
@@ -197,7 +197,7 @@ public class BufferedReader extends Read
}
}
- /* 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 Read
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)