This is the mail archive of the java-patches@sourceware.cygnus.com 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]

java.io and gnu.gcj.convert Changes


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)

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