diff options
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 5793ea3308..387e9f5e60 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -472,8 +472,8 @@ ZEND_FUNCTION(func_get_args) arg_count = ZEND_CALL_NUM_ARGS(ex); - array_init_size(return_value, arg_count); if (arg_count) { + array_init_size(return_value, arg_count); first_extra_arg = ex->func->op_array.num_args; zend_hash_real_init(Z_ARRVAL_P(return_value), 1); ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) { @@ -512,6 +512,8 @@ ZEND_FUNCTION(func_get_args) } } ZEND_HASH_FILL_END(); Z_ARRVAL_P(return_value)->nNumOfElements = arg_count; + } else { + ZVAL_EMPTY_ARRAY(return_value); } } /* }}} */ @@ -2122,11 +2124,11 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) / { uint32_t num_args = ZEND_CALL_NUM_ARGS(call); - array_init_size(arg_array, num_args); if (num_args) { uint32_t i = 0; zval *p = ZEND_CALL_ARG(call, 1); + array_init_size(arg_array, num_args); zend_hash_real_init(Z_ARRVAL_P(arg_array), 1); ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(arg_array)) { if (call->func->type == ZEND_USER_FUNCTION) { @@ -2184,6 +2186,8 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) / } } ZEND_HASH_FILL_END(); Z_ARRVAL_P(arg_array)->nNumOfElements = num_args; + } else { + ZVAL_EMPTY_ARRAY(arg_array); } } /* }}} */ |