summaryrefslogtreecommitdiffstats
path: root/gcc/java/verify-impl.c
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-17 19:29:04 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-17 19:29:04 +0000
commitc641e411d59a2b935f01cabc84df36ed1a94f2a1 (patch)
tree0ba66c20b43598ff0ac880194efa9324c2eaceae /gcc/java/verify-impl.c
parentcc809a95aa67566da3ee63a93dfbb1a38bc2bb94 (diff)
downloadppe42-gcc-c641e411d59a2b935f01cabc84df36ed1a94f2a1.tar.gz
ppe42-gcc-c641e411d59a2b935f01cabc84df36ed1a94f2a1.zip
* verify-impl.c (get_short): Sign extend.
(get_int): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93772 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/verify-impl.c')
-rw-r--r--gcc/java/verify-impl.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/java/verify-impl.c b/gcc/java/verify-impl.c
index f48797892b2..ee8f426e5a3 100644
--- a/gcc/java/verify-impl.c
+++ b/gcc/java/verify-impl.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
+/* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation
This file is part of libgcj.
@@ -1439,7 +1439,7 @@ get_ushort (void)
static jint
get_short (void)
{
- jint b1 = get_byte ();
+ signed char b1 = (signed char) get_byte ();
jint b2 = get_byte ();
jshort s = (b1 << 8) | b2;
return (jint) s;
@@ -1452,7 +1452,10 @@ get_int (void)
jint b2 = get_byte ();
jint b3 = get_byte ();
jint b4 = get_byte ();
- return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4;
+ jword result = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4;
+ /* In the compiler, 'jint' might have more than 32 bits, so we must
+ sign extend. */
+ return WORD_TO_INT (result);
}
static int
OpenPOWER on IntegriCloud