diff options
author | Derick Rethans <github@derickrethans.nl> | 2013-10-28 15:09:13 +0100 |
---|---|---|
committer | Derick Rethans <github@derickrethans.nl> | 2013-10-28 15:09:13 +0100 |
commit | 824bac9f23313b52c7ca93c2380d12e500ece66a (patch) | |
tree | 1f56aff0992be5d422a7426977f896065d16344d /Zend/zend_builtin_functions.c | |
parent | bb73d18c85d6deabc76bdc066f0551a88d01af81 (diff) | |
parent | 2d14cc2a4986a3a2afd94c79283ab1dc8a3fe157 (diff) | |
download | php-git-824bac9f23313b52c7ca93c2380d12e500ece66a.tar.gz |
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 1ad64e74ea..6cbe0bc687 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -461,12 +461,17 @@ ZEND_FUNCTION(func_get_args) array_init_size(return_value, arg_count); for (i=0; i<arg_count; i++) { - zval *element; + zval *element, *arg; - ALLOC_ZVAL(element); - *element = **((zval **) (p-(arg_count-i))); - zval_copy_ctor(element); - INIT_PZVAL(element); + arg = *((zval **) (p-(arg_count-i))); + if (!Z_ISREF_P(arg)) { + element = arg; + Z_ADDREF_P(element); + } else { + ALLOC_ZVAL(element); + INIT_PZVAL_COPY(element, arg); + zval_copy_ctor(element); + } zend_hash_next_index_insert(return_value->value.ht, &element, sizeof(zval *), NULL); } } |