1.1 --- a/emul/mini/src/main/java/java/lang/String.java Sat Jan 26 08:47:05 2013 +0100
1.2 +++ b/emul/mini/src/main/java/java/lang/String.java Mon Jan 28 12:18:24 2013 +0100
1.3 @@ -971,10 +971,24 @@
1.4 * @since JDK1.1
1.5 */
1.6 public byte[] getBytes() {
1.7 - byte[] arr = new byte[length()];
1.8 - for (int i = 0; i < arr.length; i++) {
1.9 - final char v = charAt(i);
1.10 - arr[i] = (byte)v;
1.11 + int len = length();
1.12 + byte[] arr = new byte[len];
1.13 + for (int i = 0, j = 0; j < len; j++) {
1.14 + final int v = charAt(j);
1.15 + if (v < 128) {
1.16 + arr[i++] = (byte) v;
1.17 + continue;
1.18 + }
1.19 + if (v < 0x0800) {
1.20 + arr = System.expandArray(arr, i + 1);
1.21 + arr[i++] = (byte) (0xC0 | (v >> 6));
1.22 + arr[i++] = (byte) (0x80 | (0x3F & v));
1.23 + continue;
1.24 + }
1.25 + arr = System.expandArray(arr, i + 2);
1.26 + arr[i++] = (byte) (0xE0 | (v >> 12));
1.27 + arr[i++] = (byte) (0x80 | ((v >> 6) & 0x7F));
1.28 + arr[i++] = (byte) (0x80 | (0x3F & v));
1.29 }
1.30 return arr;
1.31 }