diff --git a/src/ffi.c b/src/ffi.c index 30e50589..c6f5b5d6 100644 --- a/src/ffi.c +++ b/src/ffi.c @@ -726,7 +726,7 @@ B libffiFn_c2(B t, B w, B x) { BoundFn* bf = c(BoundFn,t); B argObj = c(HArr,bf->obj)->a[0]; - u32 flags = (u64)bf->w_c1; + u32 flags = ptr2u64(bf->w_c1); Arr* wa ONLY_GCC(=0); AS2B wf ONLY_GCC(=0); Arr* xa ONLY_GCC(=0); AS2B xf ONLY_GCC(=0); @@ -925,7 +925,7 @@ B ffiload_c2(B t, B w, B x) { if (s!=FFI_OK) thrM("FFI: Error preparing call interface"); // mm_free(argsRaw) u32 flags = many[1] | many[0]<<1 | tRes.resSingle<<2; - B r = m_ffiFn(foreignFnDesc, m_hvec3(argObj, tag(cif, OBJ_TAG), tag(argsRaw, OBJ_TAG)), libffiFn_c1, libffiFn_c2, (void*)(u64)flags, sym); + B r = m_ffiFn(foreignFnDesc, m_hvec3(argObj, tag(cif, OBJ_TAG), tag(argsRaw, OBJ_TAG)), libffiFn_c1, libffiFn_c2, TOPTR(void,flags), sym); c(BoundFn,r)->mutCount = mutCount; return r; #endif