diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2012-10-26 08:23:46 +0100 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2012-10-26 08:23:46 +0100 |
commit | 44c0432dbf26f627606182cdf953bee9666a641c (patch) | |
tree | a374fdeb2d628d49d1907abab4b16f197ede5f78 /java | |
parent | d872df55e1f67fbf4d8eaa25094fdcaa68771230 (diff) | |
download | classpath-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.java | 3 |
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; } |