src/java.base/share/classes/java/util/zip/ZipFile.java
changeset 48337 0ee20aad71c4
parent 48330 e8230b52a8f4
child 49442 d6d1c06becda
--- 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)