From 707f5f6d4515f26085d4d5c062464a3895b05cdf Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 21 Sep 1999 23:20:43 +0000 Subject: [PATCH] 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 --- libjava/ChangeLog | 3 +++ libjava/gnu/gcj/convert/Output_UTF8.java | 20 ++++++-------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index f43d80eba78..f054dbee2e1 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,8 @@ 1999-09-21 Tom Tromey + * 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. diff --git a/libjava/gnu/gcj/convert/Output_UTF8.java b/libjava/gnu/gcj/convert/Output_UTF8.java index db2215a6171..d842f2b93f3 100644 --- a/libjava/gnu/gcj/convert/Output_UTF8.java +++ b/libjava/gnu/gcj/convert/Output_UTF8.java @@ -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) { -- 2.30.2