summaryrefslogtreecommitdiffstats
path: root/libjava/java/lang
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/lang
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/lang')
-rw-r--r--libjava/java/lang/natString.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/libjava/java/lang/natString.cc b/libjava/java/lang/natString.cc
index 8c9789e80b5..98309cfe62e 100644
--- a/libjava/java/lang/natString.cc
+++ b/libjava/java/lang/natString.cc
@@ -602,12 +602,12 @@ java::lang::String::getBytes (jstring enc)
jint offset = 0;
gnu::gcj::convert::UnicodeToBytes *converter
= gnu::gcj::convert::UnicodeToBytes::getEncoder(enc);
- while (todo > 0)
+ while (todo > 0 || converter->havePendingBytes())
{
converter->setOutput(buffer, bufpos);
int converted = converter->write(this, offset, todo, NULL);
bufpos = converter->count;
- if (converted == 0)
+ if (converted == 0 && bufpos == converter->count)
{
buflen *= 2;
jbyteArray newbuffer = JvNewByteArray(buflen);
@@ -615,10 +615,10 @@ java::lang::String::getBytes (jstring enc)
buffer = newbuffer;
}
else
- {
- offset += converted;
- todo -= converted;
- }
+ bufpos = converter->count;
+
+ offset += converted;
+ todo -= converted;
}
converter->done ();
if (bufpos == buflen)
OpenPOWER on IntegriCloud