@@ -1679,9 +1679,7 @@ void user_shutdown_function_dtor(zval *zv) /* {{{ */
1679
1679
void user_tick_function_dtor (user_tick_function_entry * tick_function_entry ) /* {{{ */
1680
1680
{
1681
1681
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);
1685
1683
}
1686
1684
/* }}} */
1687
1685
@@ -2377,17 +2375,19 @@ PHP_FUNCTION(getprotobynumber)
2377
2375
PHP_FUNCTION (register_tick_function )
2378
2376
{
2379
2377
user_tick_function_entry tick_fe ;
2378
+ zval * params ;
2379
+ uint32_t param_count ;
2380
2380
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 ();
2385
2385
2386
2386
tick_fe .calling = false;
2387
2387
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
+
2391
2391
if (!BG (user_tick_functions )) {
2392
2392
BG (user_tick_functions ) = (zend_llist * ) emalloc (sizeof (zend_llist ));
2393
2393
zend_llist_init (BG (user_tick_functions ),
0 commit comments