aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/ObjectInputStream.java
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@albatross.co.nz>2001-01-27 06:04:29 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2001-01-27 06:04:29 +0000
commit60b7365f52d635016272d4622b0c8a3df30205c8 (patch)
treec15526d29fdc612fde34a407401f6e18edca8b69 /libjava/java/io/ObjectInputStream.java
parent31e1e0a6528b84e40f8eb97552e4bbe1070e5513 (diff)
downloadgcc-60b7365f52d635016272d4622b0c8a3df30205c8.zip
gcc-60b7365f52d635016272d4622b0c8a3df30205c8.tar.gz
gcc-60b7365f52d635016272d4622b0c8a3df30205c8.tar.bz2
ObjectInputStream.java (read): AND byte with 0xff to make result unsigned.
* java/io/ObjectInputStream.java (read): AND byte with 0xff to make result unsigned. (read (byte[], int, int)): Only call readNextBlock() if the block buffer would actually be overrun. Increment blockDataPosition. (callReadMethod): Propagate exceptions from invocation target. * java/io/ObjectOutputStream.java (callWriteMethod): Propagate exceptions from invocation target. From-SVN: r39293
Diffstat (limited to 'libjava/java/io/ObjectInputStream.java')
-rw-r--r--libjava/java/io/ObjectInputStream.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java
index 595e9de..9c10d58 100644
--- a/libjava/java/io/ObjectInputStream.java
+++ b/libjava/java/io/ObjectInputStream.java
@@ -577,21 +577,23 @@ public class ObjectInputStream extends InputStream
{
if (this.blockDataPosition >= this.blockDataBytes)
readNextBlock ();
- return this.blockData[this.blockDataPosition++];
+ return (this.blockData[this.blockDataPosition++] & 0xff);
}
else
return this.realInputStream.read ();
}
- public int read (byte data[], int offset, int length) throws IOException
+ public int read (byte[] data, int offset, int length) throws IOException
{
if (this.readDataFromBlock)
{
- if (this.blockDataPosition + length >= this.blockDataBytes)
+ if (this.blockDataPosition + length > this.blockDataBytes)
readNextBlock ();
System.arraycopy (this.blockData, this.blockDataPosition,
data, offset, length);
+ blockDataPosition += length;
+
return length;
}
else
@@ -1359,16 +1361,29 @@ public class ObjectInputStream extends InputStream
{
try
{
- Class classArgs[] = {Class.forName ("java.io.ObjectInputStream")};
+ Class classArgs[] = {ObjectInputStream.class};
Method m = getMethod (klass, "readObject", classArgs);
if (m == null)
return;
Object args[] = {this};
- m.invoke (obj, args);
+ m.invoke (obj, args);
}
- catch (Exception _)
+ catch (InvocationTargetException x)
+ {
+ /* Rethrow if possible. */
+ Throwable exception = x.getTargetException();
+ if (exception instanceof RuntimeException)
+ throw (RuntimeException) exception;
+ if (exception instanceof IOException)
+ throw (IOException) exception;
+
+ throw new IOException ("Exception thrown from readObject() on " +
+ klass + ": " + exception.getClass().getName());
+ }
+ catch (Exception x)
{
- throw new IOException ();
+ throw new IOException ("Failure invoking readObject() on " +
+ klass + ": " + x.getClass().getName());
}
}