From 18a6393ecf2c58508eef44be6233796172cc19ec Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Mon, 16 May 2011 10:30:56 -0600 Subject: [PATCH] fix ClassCastException in ZipFile.getInputStream This was being thrown when the parameter passed was a JarFile.MyJarEntry, not a ZipFile.MyZipEntry, yet we cast it to the latter. --- classpath/java/util/jar/JarFile.java | 6 +++++- classpath/java/util/zip/ZipFile.java | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/classpath/java/util/jar/JarFile.java b/classpath/java/util/jar/JarFile.java index af9e34f975..f86fd6ac36 100644 --- a/classpath/java/util/jar/JarFile.java +++ b/classpath/java/util/jar/JarFile.java @@ -33,7 +33,7 @@ public class JarFile extends ZipFile { return (JarEntry) getEntry(JarEntryFactory.Instance, name); } - private static class MyJarEntry extends JarEntry { + private static class MyJarEntry extends JarEntry implements MyEntry { public final Window window; public final int pointer; @@ -65,6 +65,10 @@ public class JarFile extends ZipFile { return 0; } } + + public int pointer() { + return pointer; + } } private static class JarEntryFactory implements EntryFactory { diff --git a/classpath/java/util/zip/ZipFile.java b/classpath/java/util/zip/ZipFile.java index 2bbb13c35a..c80e7104f2 100644 --- a/classpath/java/util/zip/ZipFile.java +++ b/classpath/java/util/zip/ZipFile.java @@ -83,7 +83,7 @@ public class ZipFile { } public InputStream getInputStream(ZipEntry entry) throws IOException { - int pointer = ((MyZipEntry) entry).pointer; + int pointer = ((MyEntry) entry).pointer(); int method = compressionMethod(window, pointer); int size = compressedSize(window, pointer); InputStream in = new MyInputStream(file, fileData(window, pointer), size); @@ -245,7 +245,11 @@ public class ZipFile { } } - private static class MyZipEntry extends ZipEntry { + protected interface MyEntry { + public int pointer(); + } + + private static class MyZipEntry extends ZipEntry implements MyEntry { public final Window window; public final int pointer; @@ -277,6 +281,10 @@ public class ZipFile { return 0; } } + + public int pointer() { + return pointer; + } } protected interface EntryFactory {