diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-21 23:20:43 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-21 23:20:43 +0000 |
commit | bfc1cdbf56a140bd04087e681b9013d17bf6dcd4 (patch) | |
tree | da4f43d642f9825ae706547c79efb5a1a6ed3396 /libjava/gnu | |
parent | 6579a9b605e38cd157ce3c266217d2708eade2d2 (diff) | |
download | gcc-bfc1cdbf56a140bd04087e681b9013d17bf6dcd4.tar.gz |
* gnu/gcj/convert/Output_UTF8.java (write): Don't exit loop unless
both `inlength' and `bytes_todo' are 0. Simplified 2-byte case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29570 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu')
-rw-r--r-- | libjava/gnu/gcj/convert/Output_UTF8.java | 20 |
1 files changed, 6 insertions, 14 deletions
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) { |