commit-classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: Patch: java.io.ObjectInputStream


From: Jeroen Frijters
Subject: FYI: Patch: java.io.ObjectInputStream
Date: Tue, 10 Feb 2004 08:29:07 +0100

Hi,

I applied Ito Kazumitsu's patch below.

Regards,
Jeroen

Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.1884
diff -u -r1.1884 ChangeLog
--- ChangeLog   6 Feb 2004 13:17:08 -0000       1.1884
+++ ChangeLog   10 Feb 2004 07:24:09 -0000
@@ -1,3 +1,8 @@
+2004-02-10  Ito Kazumitsu  <address@hidden>
+
+       * java/io/ObjectInputStream.java (readClassDescriptor): Avoid
the
+        overflow of fieldmapping.
+
 2004-02-06  Mohan Embar  <address@hidden>
 
        * java/io/BufferedReader.java (sbuf): New field.
Index: java/io/ObjectInputStream.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/io/ObjectInputStream.java,v
retrieving revision 1.37
diff -u -r1.37 ObjectInputStream.java
--- java/io/ObjectInputStream.java      2 Feb 2004 10:26:51 -0000
1.37
+++ java/io/ObjectInputStream.java      10 Feb 2004 07:24:12 -0000
@@ -491,7 +491,6 @@
     ObjectStreamField[] stream_fields = osc.fields;
     ObjectStreamField[] real_fields =
ObjectStreamClass.lookup(clazz).fields;
     ObjectStreamField[] fieldmapping = new ObjectStreamField[2 *
Math.max(stream_fields.length, real_fields.length)];
-    osc.fieldMapping = fieldmapping;
 
     int stream_idx = 0;
     int real_idx = 0;
@@ -543,9 +542,21 @@
          }
        if (real_field != null && !real_field.isToSet())
            real_field = null;
+       /* If some of stream_fields does not correspond to any of
real_fields,
+        * or the opposite, then fieldmapping will go short.
+        */
+       if (map_idx == fieldmapping.length)
+         {
+           ObjectStreamField[] newfieldmapping =
+             new ObjectStreamField[fieldmapping.length + 2];
+           System.arraycopy(fieldmapping, 0,
+             newfieldmapping, 0, fieldmapping.length);
+           fieldmapping = newfieldmapping;
+         }
        fieldmapping[map_idx++] = stream_field;
        fieldmapping[map_idx++] = real_field;
       }
+    osc.fieldMapping = fieldmapping;
 
     return osc;
   }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]