projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
prepare varargs calls
[m6w6/ext-psi]
/
src
/
libffi.c
diff --git
a/src/libffi.c
b/src/libffi.c
index ee077af19b4b2af2cbba62b6c41dc2961355eaa8..257fb48521b73f965a9534410daedf595da5a1e0 100644
(file)
--- a/
src/libffi.c
+++ b/
src/libffi.c
@@
-127,6
+127,8
@@
static inline PSI_LibffiCall *PSI_LibffiCallAlloc(PSI_Context *C, decl *decl) {
call->params[c] = NULL;
decl->call.info = call;
call->params[c] = NULL;
decl->call.info = call;
+ decl->call.rval = decl->func->ptr;
+ decl->call.argc = c;
decl->call.args = (void **) &call->params[c+1];
rc = ffi_prep_cif(&call->signature, psi_ffi_abi(decl->abi->convention),
decl->call.args = (void **) &call->params[c+1];
rc = ffi_prep_cif(&call->signature, psi_ffi_abi(decl->abi->convention),
@@
-250,10
+252,10
@@
static zend_function_entry *psi_ffi_compile(PSI_Context *C)
return zfe;
}
return zfe;
}
-static void psi_ffi_call(PSI_Context *C,
impl_val *ret_val, decl *dec
l) {
- PSI_LibffiCall *call = decl
->call.
info;
+static void psi_ffi_call(PSI_Context *C,
decl_callinfo *decl_cal
l) {
+ PSI_LibffiCall *call = decl
_call->
info;
- ffi_call(&call->signature, FFI_FN(decl
->call.sym), ret_val, decl->call.
args);
+ ffi_call(&call->signature, FFI_FN(decl
_call->sym), decl_call->rval, decl_call->
args);
}
static PSI_ContextOps ops = {
}
static PSI_ContextOps ops = {