In message "patches to slove an OutputStreamWriter problem"
    on 00/05/14, Ito Kazumitsu <[EMAIL PROTECTED]> writes:

> So I prepared a method "convertALAP" (convert as long as possible)
> in CharToByteConverter, which may not necessarily convert the
> whole input specified by fpos and flen, but tries to convert
> the input as long as possible, and  returns not only the output
> length but also the input length actually processed.

I made another patch to OutputStreamWriter.java without
introducing such a new method.

Just using encoding.flush will solve the problem.

*** java/io/OutputStreamWriter.java.orig        Fri Aug 13 10:56:01 1999
--- java/io/OutputStreamWriter.java     Mon May 15 09:25:43 2000
***************
*** 74,88 ****
        }
  
        synchronized (lock) {
!               while (len > 0) {
                        int outlen = encoding.convert(cbuf, off, len,
                                outbuf, buflen, outbuf.length - buflen);
!                       buflen += outlen;
!                       if (outlen == 0 || outbuf.length - buflen < MINMARGIN) {
                                flush();
                        }
-                       off += outlen;
-                       len -= outlen;
                }
        }
  }
--- 74,93 ----
        }
  
        synchronized (lock) {
!               if (len > 0) {
                        int outlen = encoding.convert(cbuf, off, len,
                                outbuf, buflen, outbuf.length - buflen);
!                       if (outlen == 0) {
                                flush();
+                               outlen = encoding.flush(outbuf, buflen, outbuf.length 
+- buflen);
+                       }
+                       while (outlen > 0) {
+                               buflen += outlen;
+                               if (outbuf.length - buflen < MINMARGIN) {
+                                       flush();
+                               }
+                               outlen = encoding.flush(outbuf, buflen, outbuf.length 
+- buflen);
                        }
                }
        }
  }

Reply via email to