--- 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();