--- old/src/java.base/share/classes/java/util/zip/Deflater.java 2017-12-18 09:01:06.690318816 +0100 +++ new/src/java.base/share/classes/java/util/zip/Deflater.java 2017-12-18 09:01:06.549318060 +0100 @@ -187,7 +187,7 @@ this.level = level; this.strategy = DEFAULT_STRATEGY; this.zsRef = DeflaterZStreamRef.get(this, - init(level, DEFAULT_STRATEGY, nowrap)); + level, DEFAULT_STRATEGY, nowrap); } /** @@ -604,9 +604,9 @@ private long address; private final Cleanable cleanable; - private DeflaterZStreamRef(Deflater owner, long addr) { + private DeflaterZStreamRef(Deflater owner, int level, int strategy, boolean nowrap) { this.cleanable = (owner != null) ? CleanerFactory.cleaner().register(owner, this) : null; - this.address = addr; + this.address = init(level, strategy, nowrap); } long address() { @@ -632,23 +632,23 @@ * This mechanism will be removed when the {@code finalize} method is * removed from {@code Deflater}. */ - static DeflaterZStreamRef get(Deflater owner, long addr) { + static DeflaterZStreamRef get(Deflater owner, int level, int strategy, boolean nowrap) { Class clz = owner.getClass(); while (clz != Deflater.class) { try { clz.getDeclaredMethod("end"); - return new FinalizableZStreamRef(owner, addr); + return new FinalizableZStreamRef(owner, level, strategy, nowrap); } catch (NoSuchMethodException nsme) {} clz = clz.getSuperclass(); } - return new DeflaterZStreamRef(owner, addr); + return new DeflaterZStreamRef(owner, level, strategy, nowrap); } private static class FinalizableZStreamRef extends DeflaterZStreamRef { final Deflater owner; - FinalizableZStreamRef (Deflater owner, long addr) { - super(null, addr); + FinalizableZStreamRef (Deflater owner, int level, int strategy, boolean nowrap) { + super(null, level, strategy, nowrap); this.owner = owner; }