From a0191f0505688a0d0afbcc0e9e44fd05c6eccec4 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 18 Jul 2004 09:55:46 +0000 Subject: [PATCH] don't allocate 0 bytes here either --- ext/standard/basic_functions.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 2a8239795e..8d2546c863 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1956,13 +1956,17 @@ PHP_FUNCTION(call_user_func_array) func_params_ht = Z_ARRVAL_PP(params); count = zend_hash_num_elements(func_params_ht); - func_params = safe_emalloc(sizeof(zval **), count, 0); - - for (zend_hash_internal_pointer_reset(func_params_ht); - zend_hash_get_current_data(func_params_ht, (void **) &func_params[current]) == SUCCESS; - zend_hash_move_forward(func_params_ht) - ) { - current++; + if (count) { + func_params = safe_emalloc(sizeof(zval **), count, 0); + + for (zend_hash_internal_pointer_reset(func_params_ht); + zend_hash_get_current_data(func_params_ht, (void **) &func_params[current]) == SUCCESS; + zend_hash_move_forward(func_params_ht) + ) { + current++; + } + } else { + func_params = NULL; } if (call_user_function_ex(EG(function_table), NULL, *func, &retval_ptr, count, func_params, 0, NULL TSRMLS_CC) == SUCCESS && retval_ptr) { @@ -1972,7 +1976,9 @@ PHP_FUNCTION(call_user_func_array) } efree(name); - efree(func_params); + if (func_params) { + efree(func_params); + } } /* }}} */ -- 2.50.1