X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Flibffi.c;h=8d41b7a192fa24287bffa03c522821d87bfea015;hp=f776fb7670455cf50a2758ac3fc7f039d5926837;hb=ad859923be758c210e2ad4226eb8e3b09bcf91eb;hpb=0e6d6d0bdaf5cca59d04a8f4e9fcca8a65f341d8 diff --git a/src/libffi.c b/src/libffi.c index f776fb7..8d41b7a 100644 --- a/src/libffi.c +++ b/src/libffi.c @@ -283,10 +283,15 @@ static void psi_ffi_call(PSI_Context *C, decl_callinfo *decl_call, impl_vararg * params[nfixedargs + i] = psi_ffi_impl_type(va->types[i]); params[nfixedargs + i + ntotalargs + 1] = &va->values[i]; } - +#ifdef PSI_HAVE_FFI_PREP_CIF_VAR rc = ffi_prep_cif_var(&signature, call->signature.abi, nfixedargs, ntotalargs, call->signature.rtype, (ffi_type **) params); +#else + /* FIXME: test in config.m4; assume we can just call anyway */ + rc = ffi_prep_cif(&signature, call->signature.abi, ntotalargs, + call->signature.rtype, (ffi_type **) params); +#endif ZEND_ASSERT(FFI_OK == rc); ffi_call(&signature, FFI_FN(decl_call->sym), decl_call->rval, ¶ms[ntotalargs + 1]); free(params);