diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 29ea613d0065..06fb5bd1df58 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 f66cddd62de2..cef8a274266f 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 d72788e30187..edc14a4e99a5 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(); + } + }