RFR JDK-7031075: GZIPInputStream's available() reports 1, but read() gives -1.

Xueming Shen xueming.shen at oracle.com
Mon Jul 11 22:53:42 UTC 2016


Please help review the change for JDK-7031075.

issue: https://bugs.openjdk.java.net/browse/JDK-7031075
webrev: http://cr.openjdk.java.net/~sherman/7031075/webrev

This is a corner case in current implementation, in which the "readEOF"
flag is only set when/after the read/skip method is invoked and the "eof"
is "explicitly" reached. Which means even the inflater has reached the
"end of the compressed stream" (inf.finished() == true) during the last
read/skip invocation (since there are still data available, so the date gets
read/returned successfully), the readEOF is not set, and therefor the
available() return > 0 if checked.

The proposed change here is to do an extra check of the inf.finished(),
if it returns true, means there is no more data inside the inflater the
end of compressed stream has been reached, available() returns true
in this case.


More information about the core-libs-dev mailing list