Commit 684cf7e6c47 for php

commit 684cf7e6c47c2266532c5faa72909778f9e1744e
Merge: 85a8601e684 b015e2ae499
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Sun Sep 27 12:51:08 2026 -0400

    Merge branch 'PHP-8.6'

    * PHP-8.6:
      ext/ffi: Hold a reference to the callable of an FFI callback

diff --cc ext/ffi/ffi.c
index 518a9d9c47f,691af066d5b..37a0a215262
--- a/ext/ffi/ffi.c
+++ b/ext/ffi/ffi.c
@@@ -959,17 -951,14 +951,12 @@@ static void zend_ffi_callback_trampolin
  		} ZEND_HASH_FOREACH_END();
  	}

- 	ZVAL_UNDEF(&retval);
- 	if (zend_call_function(&fci, &callback_data->fcc) != SUCCESS) {
- 		zend_throw_error(zend_ffi_exception_ce, "Cannot call callback");
- 	}
+ 	zend_call_known_fcc(&callback_data->fcc, &retval, callback_data->arg_count, params, NULL);

--	if (callback_data->arg_count) {
--		for (uint32_t n = 0; n < callback_data->arg_count; n++) {
- 			zval_ptr_dtor(&fci.params[n]);
 -			zval_ptr_dtor(&params[n]);
--		}
++	for (uint32_t n = 0; n < callback_data->arg_count; n++) {
++		zval_ptr_dtor(&params[n]);
  	}
- 	free_alloca(fci.params, use_heap);
+ 	free_alloca(params, use_heap);

  	if (EG(exception)) {
  		zend_error_noreturn(E_ERROR, "Throwing from FFI callbacks is not allowed");