From 03e9b84966702f926adfbf2c1cfe0cce0a7e72ae Mon Sep 17 00:00:00 2001 From: Mattias Rehnberg Date: Sat, 6 Nov 2004 16:52:00 +0100 Subject: [PATCH] 2004-11-06 Mattias Rehnberg * java/io/Vector.java (writeObject): New function to serialized output thread safe. * java/io/ObjectOutputStream.java (writeObject): Move the assignment of the class handle to after the assignment of class descriptor handle. From-SVN: r90175 --- libjava/ChangeLog | 9 +++++++++ libjava/java/io/ObjectOutputStream.java | 2 +- libjava/java/util/Vector.java | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 29ea613d006..06fb5bd1df5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2004-11-06 Mattias Rehnberg + + * java/io/Vector.java + (writeObject): New function to serialized output thread safe. + + * java/io/ObjectOutputStream.java + (writeObject): Move the assignment of the class handle to after + the assignment of class descriptor handle. + 2004-11-06 Robert Schuster Fixes documentation and indentation diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java index f66cddd62de..cef8a274266 100644 --- a/libjava/java/io/ObjectOutputStream.java +++ b/libjava/java/io/ObjectOutputStream.java @@ -220,7 +220,6 @@ public class ObjectOutputStream extends OutputStream { Class cl = (Class)obj; ObjectStreamClass osc = ObjectStreamClass.lookupForClassObject(cl); - assignNewHandle(obj); realOutput.writeByte(TC_CLASS); if (!osc.isProxyClass) { @@ -241,6 +240,7 @@ public class ObjectOutputStream extends OutputStream writeObject(osc.getSuper()); } + assignNewHandle(obj); break; } diff --git a/libjava/java/util/Vector.java b/libjava/java/util/Vector.java index d72788e3018..edc14a4e99a 100644 --- a/libjava/java/util/Vector.java +++ b/libjava/java/util/Vector.java @@ -37,6 +37,9 @@ exception statement from your version. */ package java.util; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.Serializable; import java.lang.reflect.Array; @@ -912,4 +915,18 @@ public class Vector extends AbstractList if (index >= elementCount) throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount); } + + /** + * Serializes this object to the given stream. + * + * @param s the stream to write to + * @throws IOException if the underlying stream fails + * @serialData just calls default write function + */ + private synchronized void writeObject(ObjectOutputStream s) + throws IOException + { + s.defaultWriteObject(); + } + }