> The problem is that after 
> [JDK-8281962](https://bugs.openjdk.org/browse/JDK-8292327) we call `fill()` 
> unconditionally (and before calling `Inflater::inflate()`) in 
> `InflaterInputStream::read()` if `Inflater::needsInput()` is true. This 
> misses the case where the native inflater has consumed all its input (i.e. 
> `Inflater::needsInput()` returns true) but hasn't managed to write all the 
> inflated data into the output buffer (e.g. because it was to small). In rare 
> cases, there might be now more input available (i.e. calling 
> `InflaterInputStream::fill()` will throw an `EOFException`) but we still have 
> to call `Inflater::inflate()` to consume the buffered output from the 
> underlying native inflater until inflation stops. 
> 
> The documentation of the `inflate()` method in `zlib.h` mentions this 
> explicitely:
> 
>> "If `inflate()` returns `Z_OK` and with zero `avail_out`, it must be called 
>> again after making room in the output buffer because there might be more 
>> output pending."

Volker Simonis has updated the pull request incrementally with one additional 
commit since the last revision:

  Minor changes regarding indentation, naming and spelling

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/9881/files
  - new: https://git.openjdk.org/jdk/pull/9881/files/74eb08c2..3bbfacf1

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=9881&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=9881&range=00-01

  Stats: 136 lines in 3 files changed: 73 ins; 62 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/9881.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/9881/head:pull/9881

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

Reply via email to