RFR: 8341944: zlib no longer requires dummy byte for raw inflate

Eirik Bjørsnøs eirbjo at openjdk.org
Fri Oct 11 08:25:43 UTC 2024


Please review this cleanup PR which removes overrides of `InflaterInputStream.fill` in `ZipFileInflaterInputStream` and `ZipFileSystem::getInputStream`. Associated boolean fields used to track `eof` are also removed.

These overrides exist to provide zlib with an extra dummy byte at the end of raw compressed streams (no wrapping):


// Override fill() method to provide an extra "dummy" byte
// at the end of the input stream. This is required when
// using the "nowrap" Inflater option.
protected void fill() throws IOException {

However, zlib has not required such an extra dummy byte since 2003. 


Changes in 1.2.0 (9 March 2003)
- New and improved inflate code
    - Raw inflate no longer needs an extra dummy byte at end
``` 

The code in these overrides is effectively dead and removing it cleans up our code and reclaims weirdness dollars for our budget.

Risk: I cannot imagine anyone is building OpenJDK with a 21 year old ZLIB.  Please advise if this is the case or if any zlib fork in use still has this limitation.

Testing: ZIP and ZIPFS tests run green locally. GHA results pending. No tests are added or modified, this is a cleanup-only PR.

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

Commit messages:
 - Remove overrides of InflaterInputStream.fill which provide an extra dummy byte at the end of raw compressed streams

Changes: https://git.openjdk.org/jdk/pull/21467/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21467&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8341944
  Stats: 35 lines in 2 files changed: 0 ins; 35 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/21467.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21467/head:pull/21467

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


More information about the nio-dev mailing list