[kaffe] Suggested patch: kaffe/lang/AppClassLoader.java
Helmer Krämer
hkraemer@freenet.de
Fri May 30 11:16:01 2003
On Sat, 31 May 2003 02:41:04 +0900
Ito Kazumitsu <kaz@maczuka.gcd.org> wrote:
Hi,
> Background:
> Some implementation of jar produces a jar file whose MANIFEST.MF is broken.
> For example, jar 0.92-gcc that comes with GCC of cygwin makes a MANIFEST.MF
> which has a byte 0x00 at the end of the file. When we try to load a class
> file from such a jar file, ClassNotFoundException is thrown.
>
> IMHO, such jar implementation is to blame, but such bad jar files could
> be used without problem until recently.
I wouldn't patch the AppClassLoader, but rather something somewhere
in java.util.jar. If you don't do it there, you'll get the same
problem when trying to use such a jar with the URLClassLoader and
its subclasses (and everyone else who wants to use the manifest).
So I would try something like this, dunno whether that works,
though :(
--- java/util/jar/Manifest.java 19 Feb 2002 00:48:12 -0000 1.6
+++ java/util/jar/Manifest.java 30 May 2003 18:13:21 -0000
@@ -164,6 +164,15 @@
// Update state
switch (state) {
case ST_START:
+ /* ouch. accept manifests that have a 0x00 at the end */
+ if (c == 0x00) {
+ int t = p.read();
+ if (t == -1) {
+ throw new EOFException();
+ }
+ p.unread (t);
+ }
+
if (c == '\n') {
if (attr.size() == 0) {
continue; // initial blank line
Greetings,
Helmer