From ff5fa0d6312e80c4862f046e29efee2db9cda1cd Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 5 Mar 2019 01:03:47 +0300 Subject: [PATCH] Fixed support for callbacks with "void" return type --- ext/ffi/ffi.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c index f88fe437a14..95af75ad7b6 100644 --- a/ext/ffi/ffi.c +++ b/ext/ffi/ffi.c @@ -750,6 +750,7 @@ static void zend_ffi_callback_trampoline(ffi_cif* cif, void* ret, void** args, v { zend_ffi_callback_data *callback_data = (zend_ffi_callback_data*)data; zend_fcall_info fci; + zend_ffi_type *ret_type; zval retval; ALLOCA_FLAG(use_heap) @@ -787,7 +788,10 @@ static void zend_ffi_callback_trampoline(ffi_cif* cif, void* ret, void** args, v } free_alloca(fci.params, use_heap); - zend_ffi_zval_to_cdata(ret, ZEND_FFI_TYPE(callback_data->type->func.ret_type), &retval); + ret_type = ZEND_FFI_TYPE(callback_data->type->func.ret_type); + if (ret_type->kind != ZEND_FFI_TYPE_VOID) { + zend_ffi_zval_to_cdata(ret, ret_type, &retval); + } } /* }}} */