Hi,
  as discussed on irc, I request the approval of this fix in the
deserialization part with the following changelog :

2006-02-15  Olivier jolly  <[EMAIL PROTECTED]>

    Fixed bug #14144
    * java/io/ObjectInputStream.java (readClassDescriptor)
    Class doesn't have to be abstract for first_nonserial

Thx in advance

Olivier
Index: ObjectInputStream.java
===================================================================
RCS file: /sources/classpath/classpath/java/io/ObjectInputStream.java,v
retrieving revision 1.74
diff -u -r1.74 ObjectInputStream.java
--- ObjectInputStream.java	6 Feb 2006 11:50:46 -0000	1.74
+++ ObjectInputStream.java	13 Feb 2006 18:57:08 -0000
@@ -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.
@@ -555,8 +555,7 @@
     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
@@ -565,9 +564,8 @@
     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;
 

Reply via email to