From: Wez Furlong Date: Sun, 18 Jul 2004 09:55:46 +0000 (+0000) Subject: don't allocate 0 bytes here either X-Git-Tag: PRE_ZEND_VM_DISPATCH_PATCH~479 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a0191f0505688a0d0afbcc0e9e44fd05c6eccec4;p=php don't allocate 0 bytes here either --- 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); + } } /* }}} */