summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2012-10-26 08:23:46 +0100
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2012-10-26 08:23:46 +0100
commit44c0432dbf26f627606182cdf953bee9666a641c (patch)
treea374fdeb2d628d49d1907abab4b16f197ede5f78 /java
parentd872df55e1f67fbf4d8eaa25094fdcaa68771230 (diff)
downloadclasspath-44c0432dbf26f627606182cdf953bee9666a641c.tar.gz
PR44208: Ensure a handle for the enum is registered before its constant.
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. Signed-off-by: Andrew John Hughes <gnu_andrew@member.fsf.org>
Diffstat (limited to 'java')
-rw-r--r--java/io/ObjectInputStream.java3
1 files changed, 2 insertions, 1 deletions
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;
}