summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--java/io/ObjectInputStream.java3
2 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index af36a484f..4d83f8973 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-05-20 Paul Viney <paul@diasoft.nl>
+
+ PR classpath/44208
+ * java/io/ObjectInputStream.java,
+ (parseContent(byte,boolean)): Ensure a handle
+ for the enum is registered before one for its
+ String constant.
+
2009-12-30 Paul Fernhout <pdfernhout@kurtz-fernhout.com>
PR classpath/42551
diff --git a/java/io/ObjectInputStream.java b/java/io/ObjectInputStream.java
index dc56aff9d..545ff609d 100644
--- a/java/io/ObjectInputStream.java
+++ b/java/io/ObjectInputStream.java
@@ -518,12 +518,13 @@ public class ObjectInputStream extends InputStream
if (dump)
dumpElementln("ENUM=");
ObjectStreamClass osc = (ObjectStreamClass) readObject();
+ int enumHandle = assignNewHandle(null, shared);
String constantName = (String) readObject();
if (dump)
dumpElementln("CONSTANT NAME = " + constantName);
Class clazz = osc.forClass();
Enum instance = Enum.valueOf(clazz, constantName);
- assignNewHandle(instance,shared);
+ rememberHandle(instance, shared, enumHandle);
ret_val = instance;
break;
}