--- a/src/java.base/share/classes/java/util/zip/ZipFile.java Thu Dec 14 12:51:53 2017 +0000
+++ b/src/java.base/share/classes/java/util/zip/ZipFile.java Thu Dec 14 16:05:08 2017 +0100
@@ -412,6 +412,21 @@
}
}
+ private static class InflaterCleanupAction implements Runnable {
+ private final Inflater inf;
+ private final CleanableResource res;
+
+ InflaterCleanupAction(Inflater inf, CleanableResource res) {
+ this.inf = inf;
+ this.res = res;
+ }
+
+ @Override
+ public void run() {
+ res.releaseInflater(inf);
+ }
+ }
+
private class ZipFileInflaterInputStream extends InflaterInputStream {
private volatile boolean closeRequested;
private boolean eof = false;
@@ -427,8 +442,8 @@
Inflater inf, int size) {
super(zfin, inf, size);
this.cleanable = CleanerFactory.cleaner().register(this,
- () -> res.releaseInflater(inf));
- }
+ new InflaterCleanupAction(inf, res));
+ }
public void close() throws IOException {
if (closeRequested)