summaryrefslogtreecommitdiffstats
path: root/libjava/java/io/OutputStreamWriter.java
diff options
context:
space:
mode:
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-07 18:35:00 +0000
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2003-06-07 18:35:00 +0000
commita3cef0cf3594b7f7e54cad0fabd05584daf96849 (patch)
tree4416490914744db9c6d980b6558414bd86715239 /libjava/java/io/OutputStreamWriter.java
parent0978d75cf2c65b9c4b9910edd57fd3a2c3416cf6 (diff)
downloadppe42-gcc-a3cef0cf3594b7f7e54cad0fabd05584daf96849.tar.gz
ppe42-gcc-a3cef0cf3594b7f7e54cad0fabd05584daf96849.zip
2002-06-06 James Clark <jjc@jclark.com>
Fix for PR libgcj/8738: * gnu/gcj/convert/UnicodeToBytes.java (havePendingBytes): New method. * gnu/gcj/convert/Output_SJIS.java (havePendingBytes): Likewise. * gnu/gcj/convert/Output_EUCJIS.java (havePendingBytes): Likewise. * gnu/gcj/convert/Output_UTF8.java (havePendingBytes): Likewise. (write): Always decrease avail when count is increased. * java/lang/natString.cc (getBytes): Check converter havePendingBytes() and whether output buffer is full before increasing size. 2002-06-06 Mark Wielaard <mark@klomp dot org> * java/io/PrintStream.java (writeChars(char[],int, int)): Check converter.havePendingBytes(). (writeChars(String,int,int)): Likewise. * java/io/OutputStreamWriter.java (writeChars(char[], int, int)): Check converter.havePendingBytes() and flush buffer when stalled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67595 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/io/OutputStreamWriter.java')
-rw-r--r--libjava/java/io/OutputStreamWriter.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/libjava/java/io/OutputStreamWriter.java b/libjava/java/io/OutputStreamWriter.java
index e4ecbdbab8f..8a47fdfc651 100644
--- a/libjava/java/io/OutputStreamWriter.java
+++ b/libjava/java/io/OutputStreamWriter.java
@@ -215,7 +215,7 @@ public class OutputStreamWriter extends Writer
private void writeChars(char[] buf, int offset, int count)
throws IOException
{
- while (count > 0)
+ while (count > 0 || converter.havePendingBytes())
{
// We must flush if out.count == out.buf.length.
// It is probably a good idea to flush if out.buf is almost full.
@@ -228,6 +228,13 @@ public class OutputStreamWriter extends Writer
}
converter.setOutput(out.buf, out.count);
int converted = converter.write(buf, offset, count);
+ // Flush if we cannot make progress.
+ if (converted == 0 && out.count == converter.count)
+ {
+ out.flush();
+ if (out.count != 0)
+ throw new IOException("unable to flush output byte buffer");
+ }
offset += converted;
count -= converted;
out.count = converter.count;
OpenPOWER on IntegriCloud