< prev index next >

src/java.base/share/classes/java/io/DataOutputStream.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 343,358 **** * @return The number of bytes written out. * @exception IOException if an I/O error occurs. */ static int writeUTF(String str, DataOutput out) throws IOException { int strlen = str.length(); - int utflen = 0; - int c, count = 0; ! /* use charAt instead of copying String to char array */ for (int i = 0; i < strlen; i++) { ! c = str.charAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { utflen++; } else if (c > 0x07FF) { utflen += 3; } else { --- 343,362 ---- * @return The number of bytes written out. * @exception IOException if an I/O error occurs. */ static int writeUTF(String str, DataOutput out) throws IOException { int strlen = str.length(); ! // UTF length >= strlen so fail-fast if strlen is too long ! if (strlen > 65535) ! throw new UTFDataFormatException( ! "encoded string would be too long: > 65535 bytes"); ! ! // use charAt instead of copying String to char array ! int utflen = 0; for (int i = 0; i < strlen; i++) { ! int c = str.charAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { utflen++; } else if (c > 0x07FF) { utflen += 3; } else {
*** 372,393 **** bytearr = dos.bytearr; } else { bytearr = new byte[utflen+2]; } bytearr[count++] = (byte) ((utflen >>> 8) & 0xFF); bytearr[count++] = (byte) ((utflen >>> 0) & 0xFF); int i=0; for (i=0; i<strlen; i++) { ! c = str.charAt(i); if (!((c >= 0x0001) && (c <= 0x007F))) break; bytearr[count++] = (byte) c; } for (;i < strlen; i++){ ! c = str.charAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { bytearr[count++] = (byte) c; } else if (c > 0x07FF) { bytearr[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F)); --- 376,398 ---- bytearr = dos.bytearr; } else { bytearr = new byte[utflen+2]; } + int count = 0; bytearr[count++] = (byte) ((utflen >>> 8) & 0xFF); bytearr[count++] = (byte) ((utflen >>> 0) & 0xFF); int i=0; for (i=0; i<strlen; i++) { ! int c = str.charAt(i); if (!((c >= 0x0001) && (c <= 0x007F))) break; bytearr[count++] = (byte) c; } for (;i < strlen; i++){ ! int c = str.charAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { bytearr[count++] = (byte) c; } else if (c > 0x07FF) { bytearr[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F));
< prev index next >