summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-12-10 16:02:59 +0400
committerDmitry Stogov <dmitry@zend.com>2013-12-10 16:02:59 +0400
commita46f644b3ac4abe7577165de4e4850e5c2c88227 (patch)
treeb955abff0a47c51d91759a139cbb29ede952a5a7 /Zend/zend_builtin_functions.c
parenta6516653b7ecd0fd73e4129042b1bd305b586171 (diff)
downloadphp-git-a46f644b3ac4abe7577165de4e4850e5c2c88227.tar.gz
Revered func_get_args() changes, because they were not completly transparent and broke some tricky PHP code that worked because of luck before php-5.5.6 (see Bug #66107). The changes are going to be kept in PHP-5.6.
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 6cbe0bc687..1ad64e74ea 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -461,17 +461,12 @@ ZEND_FUNCTION(func_get_args)
array_init_size(return_value, arg_count);
for (i=0; i<arg_count; i++) {
- zval *element, *arg;
+ zval *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);
- }
+ ALLOC_ZVAL(element);
+ *element = **((zval **) (p-(arg_count-i)));
+ zval_copy_ctor(element);
+ INIT_PZVAL(element);
zend_hash_next_index_insert(return_value->value.ht, &element, sizeof(zval *), NULL);
}
}