RFR JDK-7031075: GZIPInputStream's available() reports 1, but read() gives -1.
xueming.shen at oracle.com
Mon Jul 11 22:53:42 UTC 2016
Please help review the change for JDK-7031075.
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