> 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