aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/DataOutputStream.java
diff options
context:
space:
mode:
authorMichael Koch <mkoch@gcc.gnu.org>2005-04-20 09:18:19 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2005-04-20 09:18:19 +0000
commit2e2082d86450ccee4bf63f1a39e9f16742e893b2 (patch)
treefe6f7a387506b97faeb00700a21d9b4578b670ab /libjava/java/io/DataOutputStream.java
parent9db695c1983e0067167722ac45732abfed0e723e (diff)
downloadgcc-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.java18
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