RFR: 8292327: java.io.EOFException in InflaterInputStream after JDK-8281962 [v2]

Volker Simonis simonis at openjdk.org
Tue Aug 16 09:13:21 UTC 2022


On Tue, 16 Aug 2022 06:26:24 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> Not sure about this one? `fill()` is specified to throw an `IOException` and `EOFException` is an `IOException`. It probably depends on how you interpret the current "*if an I/O error has occurred*" description in the throws section.
>> 
>> Do you propose to be more specific there and write something like "*if an I/O error has occurred or the end of the input buffer has been reached*"?
>
>> Not sure about this one? `fill()` is specified to throw an `IOException` and `EOFException` is an `IOException`. It probably depends on how you interpret the current "_if an I/O error has occurred_" description in the throws section.
>> 
>> Do you propose to be more specific there and write something like "_if an I/O error has occurred or the end of the input buffer has been reached_"?
> 
> Like many JDK 1.1 era APIs, InflaterInputStream is very under-specified. In this case, the protected fill method is begging us to specify how it behaves when the input is at EOF. An I/O error is surprising here as it also sets the protected len field to indicate EOF. We can't change it after 25 years so we will need to specify existing behavior.

OK, I've opened [JDK-8292427: Improve specification of InflaterInputStream.fill()](https://bugs.openjdk.org/browse/JDK-8292427) to track this.

-------------

PR: https://git.openjdk.org/jdk/pull/9881


More information about the core-libs-dev mailing list