From a48d403c44ad59f434e95e4e089c1290c9df5925 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 19 Nov 2010 10:00:08 -0800 Subject: [PATCH] 6631046: BufferedInputStream.available() reports negative int on very large inputstream Reviewed-by: dholmes, alanb, mduigou --- jdk/src/share/classes/java/io/BufferedInputStream.java | 6 +++++- jdk/src/share/classes/java/io/PushbackInputStream.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/jdk/src/share/classes/java/io/BufferedInputStream.java b/jdk/src/share/classes/java/io/BufferedInputStream.java index d61f74bcbd3..73885f318d9 100644 --- a/jdk/src/share/classes/java/io/BufferedInputStream.java +++ b/jdk/src/share/classes/java/io/BufferedInputStream.java @@ -395,7 +395,11 @@ class BufferedInputStream extends FilterInputStream { * or an I/O error occurs. */ public synchronized int available() throws IOException { - return getInIfOpen().available() + (count - pos); + int n = count - pos; + int avail = getInIfOpen().available(); + return n > (Integer.MAX_VALUE - avail) + ? Integer.MAX_VALUE + : n + avail; } /** diff --git a/jdk/src/share/classes/java/io/PushbackInputStream.java b/jdk/src/share/classes/java/io/PushbackInputStream.java index 1984247e575..0a8e0c9cf64 100644 --- a/jdk/src/share/classes/java/io/PushbackInputStream.java +++ b/jdk/src/share/classes/java/io/PushbackInputStream.java @@ -273,7 +273,11 @@ class PushbackInputStream extends FilterInputStream { */ public int available() throws IOException { ensureOpen(); - return (buf.length - pos) + super.available(); + int n = buf.length - pos; + int avail = super.available(); + return n > (Integer.MAX_VALUE - avail) + ? Integer.MAX_VALUE + : n + avail; } /**