diff options
author | Wayne Meissner <wmeissner@gmail.com> | 2010-03-09 08:22:05 +1000 |
---|---|---|
committer | Wayne Meissner <wmeissner@gmail.com> | 2010-03-09 08:22:05 +1000 |
commit | b34342bf17ad11d52622bf7b544adebade1e90e2 (patch) | |
tree | cb8e0dfcfbed85149ae701b3a7eaed2ba3b22fa2 | |
parent | de8f031d4a410251ed2f7d8de02103e5012d761a (diff) | |
download | ffi-b34342bf17ad11d52622bf7b544adebade1e90e2.tar.gz |
Fix bool arg/return values to use an 8 bit int.
-rw-r--r-- | ext/ffi_c/Function.c | 4 | ||||
-rw-r--r-- | ext/ffi_c/Types.c | 2 |
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)); |