# HG changeset patch # User chegar # Date 1455546321 0 # Node ID 04c8859c969b4ea1b90beb25e3251dc724ac9e17 # Parent 39cff2356d03fc307d0638a953cd88e5262ffb1d 8134424: BlockDataInputStream.readUTFBody: size local StringBuffer with the given length Reviewed-by: rriggs, shade diff -r 39cff2356d03 -r 04c8859c969b jdk/src/java.base/share/classes/java/io/ObjectInputStream.java --- a/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Mon Feb 15 10:14:39 2016 +0000 +++ b/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Mon Feb 15 14:25:21 2016 +0000 @@ -3144,7 +3144,15 @@ * utflen bytes. */ private String readUTFBody(long utflen) throws IOException { - StringBuilder sbuf = new StringBuilder(); + StringBuilder sbuf; + if (utflen > 0 && utflen < Integer.MAX_VALUE) { + // a reasonable initial capacity based on the UTF length + int initialCapacity = Math.min((int)utflen, 0xFFFF); + sbuf = new StringBuilder(initialCapacity); + } else { + sbuf = new StringBuilder(); + } + if (!blkmode) { end = pos = 0; }