From 9ba35eac69022998573b5e2b21022708fd9a0f11 Mon Sep 17 00:00:00 2001 From: mark Date: Wed, 16 Nov 2005 16:30:03 +0000 Subject: 2005-11-15 Jeroen Frijters * java/io/ObjectInputStream.java (parseContent): Removed bogus println and fixed bug #24422. 2005-11-15 Mark Wielaard * java/io/ObjectStreamClass.java: Removed, fully merged now. * sources.am: Regenerated. * Makefile.in: Regenerated. 2005-11-15 Wolfgang Baer * java/io/ObjectInputStream.java (processResolution): Pass Error, RuntimeException and ObjectStreamException through to the caller. (readObject): Documentation update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107088 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/io/ObjectInputStream.java | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'libjava/java/io/ObjectInputStream.java') diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java index 47fd0789306..54661a9bc53 100644 --- a/libjava/java/io/ObjectInputStream.java +++ b/libjava/java/io/ObjectInputStream.java @@ -113,7 +113,10 @@ public class ObjectInputStream extends InputStream * private void readObject (ObjectInputStream). * * If an exception is thrown from this method, the stream is left in - * an undefined state. + * an undefined state. This method can also throw Errors and + * RuntimeExceptions if caused by existing readResolve() user code. + * + * @return The object read from the underlying stream. * * @exception ClassNotFoundException The class that an object being * read in belongs to cannot be found. @@ -199,7 +202,6 @@ public class ObjectInputStream extends InputStream for (int i = 0; i < n_intf; i++) { intfs[i] = this.realInputStream.readUTF(); - System.out.println(intfs[i]); } boolean oldmode = setBlockDataMode(true); @@ -207,6 +209,21 @@ public class ObjectInputStream extends InputStream setBlockDataMode(oldmode); ObjectStreamClass osc = lookupClass(cl); + if (osc.firstNonSerializableParentConstructor == null) + { + osc.realClassIsSerializable = true; + osc.fields = osc.fieldMapping = new ObjectStreamField[0]; + try + { + osc.firstNonSerializableParentConstructor = + Object.class.getConstructor(new Class[0]); + } + catch (NoSuchMethodException x) + { + throw (InternalError) + new InternalError("Object ctor missing").initCause(x); + } + } assignNewHandle(osc); if (!is_consumed) @@ -1558,8 +1575,15 @@ public class ObjectInputStream extends InputStream catch (IllegalAccessException ignore) { } - catch (InvocationTargetException ignore) + catch (InvocationTargetException exception) { + Throwable cause = exception.getCause(); + if (cause instanceof ObjectStreamException) + throw (ObjectStreamException) cause; + else if (cause instanceof RuntimeException) + throw (RuntimeException) cause; + else if (cause instanceof Error) + throw (Error) cause; } } -- cgit v1.2.1