diff options
author | Jesse Rosenstock <jmr@ugcs.caltech.edu> | 2002-09-25 20:10:42 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-09-25 20:10:42 +0000 |
commit | 941b08f2734f6a5cbeaeb9e82fe931fd3badc1ae (patch) | |
tree | fa6fb4d0e8106019e332a8703558eafd1598cb53 /libjava/java/util | |
parent | dac2c906db41b589d9c9adda05cf4db40973b47f (diff) | |
download | gcc-941b08f2734f6a5cbeaeb9e82fe931fd3badc1ae.zip gcc-941b08f2734f6a5cbeaeb9e82fe931fd3badc1ae.tar.gz gcc-941b08f2734f6a5cbeaeb9e82fe931fd3badc1ae.tar.bz2 |
re PR libgcj/7766 (ZipInputStream.available returns 0 immediately after construction)
2002-09-25 Jesse Rosenstock <jmr@ugcs.caltech.edu>
Fix for PR libgcj/7766:
* java/util/zip/ZipInputStream.java (entryAtEOF): New field.
(getNextEntry): Set it.
(closeEntry): Likewise.
(read): Likewise.
(close): Likewise.
(available): Use it.
From-SVN: r57513
Diffstat (limited to 'libjava/java/util')
-rw-r--r-- | libjava/java/util/zip/ZipInputStream.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libjava/java/util/zip/ZipInputStream.java b/libjava/java/util/zip/ZipInputStream.java index 63153b6..710ca74 100644 --- a/libjava/java/util/zip/ZipInputStream.java +++ b/libjava/java/util/zip/ZipInputStream.java @@ -61,6 +61,7 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants private int method; private int flags; private int avail; + private boolean entryAtEOF; /** * Creates a new Zip input stream, reading a zip archive. @@ -150,7 +151,8 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants return null; } if (header != LOCSIG) - throw new ZipException("Wrong Local header signature" + Integer.toHexString(header)); + throw new ZipException("Wrong Local header signature" + + Integer.toHexString(header)); /* skip version */ readLeShort(); flags = readLeShort(); @@ -171,6 +173,7 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants String name = new String(buffer); entry = createZipEntry(name); + entryAtEOF = false; entry.setMethod(method); if ((flags & 8) == 0) { @@ -252,11 +255,12 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants if (method == ZipOutputStream.DEFLATED) inf.reset(); entry = null; + entryAtEOF = true; } public int available() throws IOException { - return entry != null ? 1 : 0; + return entryAtEOF ? 0 : 1; } /** @@ -335,6 +339,7 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants throw new ZipException("CRC mismatch"); crc.reset(); entry = null; + entryAtEOF = true; } return len; } @@ -348,6 +353,7 @@ public class ZipInputStream extends InflaterInputStream implements ZipConstants super.close(); crc = null; entry = null; + entryAtEOF = true; } /** |