From 6db1446e54128140023bbc0b888fc1e4a28fa36b Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 17 Jan 2005 19:29:04 +0000 Subject: verify-impl.c (get_short): Sign extend. * verify-impl.c (get_short): Sign extend. (get_int): Likewise. From-SVN: r93772 --- gcc/java/verify-impl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gcc/java/verify-impl.c') diff --git a/gcc/java/verify-impl.c b/gcc/java/verify-impl.c index f487978..ee8f426 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 -- cgit v1.1