Output_UTF8.java (write): Don't exit loop unless both inlength' and bytes_todo' are 0.

* gnu/gcj/convert/Output_UTF8.java (write): Don't exit loop unless
        both `inlength' and `bytes_todo' are 0.  Simplified 2-byte case.

From-SVN: r29570
This commit is contained in:
Tom Tromey 1999-09-21 23:20:43 +00:00 committed by Tom Tromey
parent 5057b5e8d1
commit 707f5f6d45
2 changed files with 9 additions and 14 deletions

View File

@ -1,5 +1,8 @@
1999-09-21 Tom Tromey <tromey@cygnus.com>
* gnu/gcj/convert/Output_UTF8.java (write): Don't exit loop unless
both `inlength' and `bytes_todo' are 0. Simplified 2-byte case.
* include/posix-threads.h (_Jv_MutexDestroy): Use
_Jv_PthreadGetMutex.
(_Jv_MutexLock): Likewise.

View File

@ -25,7 +25,7 @@ public class Output_UTF8 extends UnicodeToBytes
// Saves the previous char if it was a high-surrogate.
char hi_part;
// Value of imcomplete character.
// Value of incomplete character.
int value;
// Number of continuation bytes still to emit.
int bytes_todo;
@ -36,9 +36,9 @@ public class Output_UTF8 extends UnicodeToBytes
int avail = buf.length - count;
for (;;)
{
if (inlength == 0 || avail == 0)
if (avail == 0 || (inlength == 0 && bytes_todo == 0))
break;
// The algororith is made more complicated because we want to write
// The algorithm is made more complicated because we want to write
// at least one byte in the output buffer, if there is room for
// that byte, and at least one input character is available.
// This makes the code more robust, since client code will
@ -70,17 +70,9 @@ public class Output_UTF8 extends UnicodeToBytes
else if (ch <= 0x07FF)
{
buf[count++] = (byte) (0xC0 | (ch >> 6));
if (--avail > 0)
{
buf[count++] = (byte) ((ch & 0x3F) | 0x80);
avail--;
}
else
{
value = ch;
bytes_todo = 1;
break;
}
avail--;
value = ch;
bytes_todo = 1;
}
else if (ch >= 0xD800 && ch <= 0xDFFF && standardUTF8)
{