jdk/src/share/classes/java/util/zip/ZipFile.java
changeset 23741 03987fb914a9
parent 19374 6773349693eb
--- a/jdk/src/share/classes/java/util/zip/ZipFile.java	Thu Apr 10 08:43:46 2014 -0700
+++ b/jdk/src/share/classes/java/util/zip/ZipFile.java	Thu Apr 10 20:01:52 2014 +0100
@@ -700,24 +700,26 @@
         }
 
         public int read(byte b[], int off, int len) throws IOException {
-            if (rem == 0) {
-                return -1;
-            }
-            if (len <= 0) {
-                return 0;
-            }
-            if (len > rem) {
-                len = (int) rem;
-            }
             synchronized (ZipFile.this) {
+                long rem = this.rem;
+                long pos = this.pos;
+                if (rem == 0) {
+                    return -1;
+                }
+                if (len <= 0) {
+                    return 0;
+                }
+                if (len > rem) {
+                    len = (int) rem;
+                }
+
                 ensureOpenOrZipException();
-
                 len = ZipFile.read(ZipFile.this.jzfile, jzentry, pos, b,
                                    off, len);
-            }
-            if (len > 0) {
-                pos += len;
-                rem -= len;
+                if (len > 0) {
+                    this.pos = (pos + len);
+                    this.rem = (rem - len);
+                }
             }
             if (rem == 0) {
                 close();