aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2004-07-13 21:06:33 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-07-13 21:06:33 +0000
commit5549179ffbab093da7b35296973c2a287ad60f20 (patch)
tree1f28b58160952afbf6be3efe85eff797baba40f9 /libjava
parent6187fd28ad121ea6a3adabdcf106df70d9ea0429 (diff)
downloadgcc-5549179ffbab093da7b35296973c2a287ad60f20.zip
gcc-5549179ffbab093da7b35296973c2a287ad60f20.tar.gz
gcc-5549179ffbab093da7b35296973c2a287ad60f20.tar.bz2
interpret.cc (run): Correctly access libffi return values of integral smaller-than-int type...
* interpret.cc (run): Correctly access libffi return values of integral smaller-than-int type; these are implicitly promoted. From-SVN: r84645
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/interpret.cc6
2 files changed, 8 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 476795a1..5460fae 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-13 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * interpret.cc (run): Correctly access libffi return values of
+ integral smaller-than-int type; these are implicitly promoted.
+
2004-07-13 Bryce McKinlay <mckinlay@redhat.com>
PR libgcj/7587
diff --git a/libjava/interpret.cc b/libjava/interpret.cc
index 40c7cba..109ee10 100644
--- a/libjava/interpret.cc
+++ b/libjava/interpret.cc
@@ -1207,15 +1207,15 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
switch (rtype)
{
case FFI_TYPE_SINT8:
- PUSHI (rvalue.byte_value);
+ PUSHI ((jbyte)(rvalue.int_value & 0xff));
break;
case FFI_TYPE_SINT16:
- PUSHI (rvalue.short_value);
+ PUSHI ((jshort)(rvalue.int_value & 0xffff));
break;
case FFI_TYPE_UINT16:
- PUSHI (rvalue.char_value);
+ PUSHI (rvalue.int_value & 0xffff);
break;
case FFI_TYPE_FLOAT: