diff --git a/binding/miniffi-binding.cpp b/binding/miniffi-binding.cpp index 01b1abc7..fc9f4ed7 100644 --- a/binding/miniffi-binding.cpp +++ b/binding/miniffi-binding.cpp @@ -3,6 +3,7 @@ #include "fake-api.h" #include +#include #include "binding-util.h" #include "debugwriter.h" @@ -251,8 +252,12 @@ RB_METHOD(MiniFFI_call) { lParam = RTEST(rb_ary_entry(args, i)); break; - case _T_NUMBER: case _T_INTEGER: +#if INTPTR_MAX == INT64_MAX + lParam = NUM2UINT(rb_ary_entry(args, i)) & UINT32_MAX; + break; +#endif + case _T_NUMBER: default: lParam = NUM2ULONG(rb_ary_entry(args, i)); break;