diff options
author | Michael Koch <mkoch@gcc.gnu.org> | 2005-04-20 09:18:19 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2005-04-20 09:18:19 +0000 |
commit | 2e2082d86450ccee4bf63f1a39e9f16742e893b2 (patch) | |
tree | fe6f7a387506b97faeb00700a21d9b4578b670ab /libjava/java/io/DataOutputStream.java | |
parent | 9db695c1983e0067167722ac45732abfed0e723e (diff) | |
download | gcc-2e2082d86450ccee4bf63f1a39e9f16742e893b2.zip gcc-2e2082d86450ccee4bf63f1a39e9f16742e893b2.tar.gz gcc-2e2082d86450ccee4bf63f1a39e9f16742e893b2.tar.bz2 |
[multiple changes]
2005-04-20 Chris Burdess <dog@gnu.org>
* java/io/DataOutputStream.java (writeUTF): Use block write for
output.
2005-04-20 Jeroen Frijters <jeroen@frijters.net>
* java/io/DataInputStream.java (ignoreInitialNewline): Removed
(readLine): Changed newline handling.
From-SVN: r98449
Diffstat (limited to 'libjava/java/io/DataOutputStream.java')
-rw-r--r-- | libjava/java/io/DataOutputStream.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libjava/java/io/DataOutputStream.java b/libjava/java/io/DataOutputStream.java index 9a2d172..c52a7ec 100644 --- a/libjava/java/io/DataOutputStream.java +++ b/libjava/java/io/DataOutputStream.java @@ -423,28 +423,32 @@ public class DataOutputStream extends FilterOutputStream implements DataOutput if (sum > 65535) throw new UTFDataFormatException (); - writeShort (sum); + int pos = 0; + byte[] buf = new byte[sum]; for (int i = 0; i < len; ++i) { char c = value.charAt(i); if (c >= '\u0001' && c <= '\u007f') - write (c); + buf[pos++] = (byte) c; else if (c == '\u0000' || (c >= '\u0080' && c <= '\u07ff')) { - write (0xc0 | (0x1f & (c >> 6))); - write (0x80 | (0x3f & c)); + buf[pos++] = (byte) (0xc0 | (0x1f & (c >> 6))); + buf[pos++] = (byte) (0x80 | (0x3f & c)); } else { // JSL says the first byte should be or'd with 0xc0, but // that is a typo. Unicode says 0xe0, and that is what is // consistent with DataInputStream. - write (0xe0 | (0x0f & (c >> 12))); - write (0x80 | (0x3f & (c >> 6))); - write (0x80 | (0x3f & c)); + buf[pos++] = (byte) (0xe0 | (0x0f & (c >> 12))); + buf[pos++] = (byte) (0x80 | (0x3f & (c >> 6))); + buf[pos++] = (byte) (0x80 | (0x3f & c)); } } + + writeShort (sum); + write(buf, 0, sum); } } // class DataOutputStream |