summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-06-25 15:30:29 +0200
committerNikita Popov <nikita.ppv@gmail.com>2017-06-25 15:30:29 +0200
commitbda0f4e8dce25280ee9db4b6058b80b74a80991f (patch)
tree8938c335072ba284ea4fedb1880ee6f0b395c218 /Zend/zend_builtin_functions.c
parent4e98990f6b164fa0ac2f5e8db6901ae75f32be2f (diff)
parentde66e80d757f2a89fa16ee436d89ecc428f369a9 (diff)
downloadphp-git-bda0f4e8dce25280ee9db4b6058b80b74a80991f.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 12f9f29636..4ec48a4c42 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -574,7 +574,7 @@ ZEND_FUNCTION(func_get_args)
{
zval *p, *q;
uint32_t arg_count, first_extra_arg;
- uint32_t i, n;
+ uint32_t i;
zend_execute_data *ex = EX(prev_execute_data);
if (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE) {
@@ -594,7 +594,6 @@ ZEND_FUNCTION(func_get_args)
zend_hash_real_init(Z_ARRVAL_P(return_value), 1);
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
i = 0;
- n = 0;
p = ZEND_CALL_ARG(ex, 1);
if (arg_count > first_extra_arg) {
while (i < first_extra_arg) {
@@ -604,7 +603,8 @@ ZEND_FUNCTION(func_get_args)
if (Z_OPT_REFCOUNTED_P(q)) {
Z_ADDREF_P(q);
}
- n++;
+ } else {
+ q = &EG(uninitialized_zval);
}
ZEND_HASH_FILL_ADD(q);
p++;
@@ -619,14 +619,15 @@ ZEND_FUNCTION(func_get_args)
if (Z_OPT_REFCOUNTED_P(q)) {
Z_ADDREF_P(q);
}
- n++;
+ } else {
+ q = &EG(uninitialized_zval);
}
ZEND_HASH_FILL_ADD(q);
p++;
i++;
}
} ZEND_HASH_FILL_END();
- Z_ARRVAL_P(return_value)->nNumOfElements = n;
+ Z_ARRVAL_P(return_value)->nNumOfElements = arg_count;
}
}
/* }}} */
@@ -2301,7 +2302,6 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
array_init_size(arg_array, num_args);
if (num_args) {
uint32_t i = 0;
- uint32_t n = 0;
zval *p = ZEND_CALL_ARG(call, 1);
zend_hash_real_init(Z_ARRVAL_P(arg_array), 1);
@@ -2324,12 +2324,9 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
if (Z_OPT_REFCOUNTED_P(arg)) {
Z_ADDREF_P(arg);
}
- n++;
ZEND_HASH_FILL_ADD(arg);
} else {
- zval tmp;
- ZVAL_UNDEF(&tmp);
- ZEND_HASH_FILL_ADD(&tmp);
+ ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
}
i++;
}
@@ -2339,9 +2336,10 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
if (Z_OPT_REFCOUNTED_P(p)) {
Z_ADDREF_P(p);
}
- n++;
+ ZEND_HASH_FILL_ADD(p);
+ } else {
+ ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
}
- ZEND_HASH_FILL_ADD(p);
p++;
i++;
}
@@ -2354,14 +2352,15 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
if (Z_OPT_REFCOUNTED_P(p)) {
Z_ADDREF_P(p);
}
- n++;
+ ZEND_HASH_FILL_ADD(p);
+ } else {
+ ZEND_HASH_FILL_ADD(&EG(uninitialized_zval));
}
- ZEND_HASH_FILL_ADD(p);
p++;
i++;
}
} ZEND_HASH_FILL_END();
- Z_ARRVAL_P(arg_array)->nNumOfElements = n;
+ Z_ARRVAL_P(arg_array)->nNumOfElements = num_args;
}
}
/* }}} */