summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Meissner <wmeissner@gmail.com>2010-03-09 08:22:05 +1000
committerWayne Meissner <wmeissner@gmail.com>2010-03-09 08:22:05 +1000
commitb34342bf17ad11d52622bf7b544adebade1e90e2 (patch)
treecb8e0dfcfbed85149ae701b3a7eaed2ba3b22fa2
parentde8f031d4a410251ed2f7d8de02103e5012d761a (diff)
downloadffi-b34342bf17ad11d52622bf7b544adebade1e90e2.tar.gz
Fix bool arg/return values to use an 8 bit int.
-rw-r--r--ext/ffi_c/Function.c4
-rw-r--r--ext/ffi_c/Types.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/ext/ffi_c/Function.c b/ext/ffi_c/Function.c
index 97abe94..dc1bb3f 100644
--- a/ext/ffi_c/Function.c
+++ b/ext/ffi_c/Function.c
@@ -374,7 +374,7 @@ callback_invoke(ffi_cif* cif, void* retval, void** parameters, void* user_data)
param = rbffi_Pointer_NewInstance(*(void **) parameters[i]);
break;
case NATIVE_BOOL:
- param = (*(void **) parameters[i]) ? Qtrue : Qfalse;
+ param = (*(int8_t *) parameters[i]) ? Qtrue : Qfalse;
break;
case NATIVE_FUNCTION:
@@ -429,7 +429,7 @@ callback_invoke(ffi_cif* cif, void* retval, void** parameters, void* user_data)
}
break;
case NATIVE_BOOL:
- *((ffi_sarg *) retval) = TYPE(rbReturnValue) == T_TRUE ? 1 : 0;
+ *((ffi_sarg *) retval) = rbReturnValue == Qtrue;
break;
case NATIVE_FUNCTION:
diff --git a/ext/ffi_c/Types.c b/ext/ffi_c/Types.c
index a1f5922..66a8a93 100644
--- a/ext/ffi_c/Types.c
+++ b/ext/ffi_c/Types.c
@@ -76,7 +76,7 @@ rbffi_NativeValue_ToRuby(Type* type, VALUE rbType, const void* ptr, VALUE enums)
case NATIVE_POINTER:
return rbffi_Pointer_NewInstance(*(void **) ptr);
case NATIVE_BOOL:
- return ((int) *(ffi_arg *) ptr) ? Qtrue : Qfalse;
+ return ((unsigned char) *(ffi_arg *) ptr) ? Qtrue : Qfalse;
case NATIVE_ENUM:
return rb_funcall(rbType, id_find, 1, INT2NUM((unsigned int) *(ffi_arg *) ptr));