< prev index next >

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

Print this page

        

@@ -363,10 +363,14 @@
      * so after some, but not all, bytes have been read. Consequently the input
      * stream may not be at end of stream and may be in an inconsistent state.
      * It is strongly recommended that the stream be promptly closed if an I/O
      * error occurs.
      *
+     * @implNote
+     * The number of bytes allocated to read data from this stream and return
+     * the result is bounded by {@code 2*(long)len}, inclusive.
+     *
      * @param len the maximum number of bytes to read
      * @return a byte array containing the bytes read from this input stream
      * @throws IllegalArgumentException if {@code length} is negative
      * @throws IOException if an I/O error occurs
      * @throws OutOfMemoryError if an array of the required size cannot be

@@ -383,11 +387,11 @@
         byte[] result = null;
         int total = 0;
         int remaining = len;
         int n;
         do {
-            byte[] buf = new byte[Math.min(len, DEFAULT_BUFFER_SIZE)];
+            byte[] buf = new byte[Math.min(remaining, DEFAULT_BUFFER_SIZE)];
             int nread = 0;
 
             // read to EOF which may read more or less than buffer size
             while ((n = read(buf, nread,
                     Math.min(buf.length - nread, remaining))) > 0) {
< prev index next >