# HG changeset patch # User redestad # Date 1444939552 -7200 # Thu Oct 15 22:05:52 2015 +0200 # Node ID 9108ba03313deaf120960930db71ea5883d362fb # Parent 91fc3c3826e6b3cdc96c3232eb1a3e447236e443 8139706: JarFile.getBytes could use InputStream.readNBytes Reviewed-by: TBD diff --git a/src/java.base/share/classes/java/util/jar/JarFile.java b/src/java.base/share/classes/java/util/jar/JarFile.java --- a/src/java.base/share/classes/java/util/jar/JarFile.java +++ b/src/java.base/share/classes/java/util/jar/JarFile.java @@ -438,10 +438,16 @@ private byte[] getBytes(ZipEntry ze) throws IOException { try (InputStream is = super.getInputStream(ze)) { int len = (int)ze.getSize(); - byte[] b = is.readAllBytes(); - if (len != -1 && b.length != len) - throw new EOFException("Expected:" + len + ", read:" + b.length); - + byte[] b; + if (len != -1) { + b = new byte[len]; + len = is.readNBytes(b, 0, len); + if (len != b.length) { + throw new EOFException("Expected:" + b.length + ", read:" + len); + } + } else { + b = is.readAllBytes(); + } return b; } }