--TEST-- GH-9090 (Support assigning function pointers via FFI) --EXTENSIONS-- ffi zend_test --FILE-- $func_ptr = $ffi->$func; call_user_func_array($ffi->$func_ptr, $argv); } catch (FFI\Exception $e) { $ok = false; } printf("%-36s = %-36s ? %s\n", $func_ptr, $func, $ok ? 'yes' : 'no'); } } ?> --EXPECT-- bug_gh9090_none bug_gh9090_void_none_ptr = bug_gh9090_void_none ? yes bug_gh9090_void_none_ptr = bug_gh9090_void_int_char ? no bug_gh9090_void_none_ptr = bug_gh9090_void_int_char_var ? no bug_gh9090_void_int_char_ptr = bug_gh9090_void_none ? no bug_gh9090_int_char 42 hello bug_gh9090_void_int_char_ptr = bug_gh9090_void_int_char ? yes bug_gh9090_void_int_char_ptr = bug_gh9090_void_int_char_var ? no bug_gh9090_void_int_char_var_ptr = bug_gh9090_void_none ? no bug_gh9090_void_int_char_var_ptr = bug_gh9090_void_int_char ? no bug_gh9090_void_int_char_var d=-1 s=ok bug_gh9090_void_int_char_var_ptr = bug_gh9090_void_int_char_var ? yes bug_gh9090_void_char_int_ptr = bug_gh9090_void_none ? no bug_gh9090_void_char_int_ptr = bug_gh9090_void_int_char ? no bug_gh9090_void_char_int_ptr = bug_gh9090_void_int_char_var ? no bug_gh9090_int_int_char_ptr = bug_gh9090_void_none ? no bug_gh9090_int_int_char_ptr = bug_gh9090_void_int_char ? no bug_gh9090_int_int_char_ptr = bug_gh9090_void_int_char_var ? no