@@ -1679,9 +1679,7 @@ void user_shutdown_function_dtor(zval *zv) /* {{{ */
16791679void user_tick_function_dtor (user_tick_function_entry * tick_function_entry ) /* {{{ */
16801680{
16811681 zval_ptr_dtor (& tick_function_entry -> fci .function_name );
1682- for (size_t i = 0 ; i < tick_function_entry -> fci .param_count ; i ++ ) {
1683- zval_ptr_dtor (& tick_function_entry -> fci .params [i ]);
1684- }
1682+ zend_fcall_info_args_clear (& tick_function_entry -> fci , true);
16851683}
16861684/* }}} */
16871685
@@ -2377,17 +2375,19 @@ PHP_FUNCTION(getprotobynumber)
23772375PHP_FUNCTION (register_tick_function )
23782376{
23792377 user_tick_function_entry tick_fe ;
2378+ zval * params ;
2379+ uint32_t param_count ;
23802380
2381- if ( zend_parse_parameters ( ZEND_NUM_ARGS (), "f*" , & tick_fe . fci , & tick_fe . fci_cache ,
2382- & tick_fe .fci . params , & tick_fe .fci . param_count ) == FAILURE ) {
2383- RETURN_THROWS ( );
2384- }
2381+ ZEND_PARSE_PARAMETERS_START ( 1 , -1 )
2382+ Z_PARAM_FUNC ( tick_fe .fci , tick_fe .fci_cache )
2383+ Z_PARAM_VARIADIC ( '+' , params , param_count );
2384+ ZEND_PARSE_PARAMETERS_END ();
23852385
23862386 tick_fe .calling = false;
23872387 Z_TRY_ADDREF (tick_fe .fci .function_name );
2388- for ( size_t i = 0 ; i < tick_fe .fci .param_count ; i ++ ) {
2389- Z_TRY_ADDREF ( tick_fe .fci . params [ i ] );
2390- }
2388+ tick_fe .fci .params = NULL ;
2389+ zend_fcall_info_argp ( & tick_fe .fci , param_count , params );
2390+
23912391 if (!BG (user_tick_functions )) {
23922392 BG (user_tick_functions ) = (zend_llist * ) emalloc (sizeof (zend_llist ));
23932393 zend_llist_init (BG (user_tick_functions ),
0 commit comments