diff options
Diffstat (limited to 'java/io/ObjectInputStream.java')
-rw-r--r-- | java/io/ObjectInputStream.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/java/io/ObjectInputStream.java b/java/io/ObjectInputStream.java index 3fff967b4..771222ad5 100644 --- a/java/io/ObjectInputStream.java +++ b/java/io/ObjectInputStream.java @@ -1,5 +1,5 @@ /* ObjectInputStream.java -- Class used to read serialized objects - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -563,8 +563,7 @@ public class ObjectInputStream extends InputStream classLookupTable.put(clazz, osc); setBlockDataMode(oldmode); - // find the first non-serializable, non-abstract - // class in clazz's inheritance hierarchy + // find the first non-serializable class in clazz's inheritance hierarchy Class first_nonserial = clazz.getSuperclass(); // Maybe it is a primitive class, those don't have a super class, // or Object itself. Otherwise we can keep getting the superclass @@ -573,9 +572,8 @@ public class ObjectInputStream extends InputStream if (first_nonserial == null) first_nonserial = clazz; else - while (Serializable.class.isAssignableFrom(first_nonserial) - || Modifier.isAbstract(first_nonserial.getModifiers())) - first_nonserial = first_nonserial.getSuperclass(); + while (Serializable.class.isAssignableFrom(first_nonserial)) + first_nonserial = first_nonserial.getSuperclass(); final Class local_constructor_class = first_nonserial; @@ -1604,7 +1602,14 @@ public class ObjectInputStream extends InputStream private void readNextBlock() throws IOException { - readNextBlock(this.realInputStream.readByte()); + byte marker = this.realInputStream.readByte(); + while (marker == TC_RESET) + { + if(dump) dumpElementln("RESET"); + clearHandles(); + marker = this.realInputStream.readByte(); + } + readNextBlock(marker); } private void readNextBlock(byte marker) throws IOException |