summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index d2dad66ad8..aaa45a8d4a 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2103,8 +2103,8 @@ ZEND_API void zend_clean_and_cache_symbol_table(zend_array *symbol_table) /* {{{
static zend_always_inline void i_free_compiled_variables(zend_execute_data *execute_data) /* {{{ */
{
zval *cv = EX_VAR_NUM(0);
- zval *end = cv + EX(func)->op_array.last_var;
- while (EXPECTED(cv != end)) {
+ int count = EX(func)->op_array.last_var;
+ while (EXPECTED(count != 0)) {
if (Z_REFCOUNTED_P(cv)) {
zend_refcounted *r = Z_COUNTED_P(cv);
if (!GC_DELREF(r)) {
@@ -2115,7 +2115,8 @@ static zend_always_inline void i_free_compiled_variables(zend_execute_data *exec
}
}
cv++;
- }
+ count--;
+ }
}
/* }}} */
@@ -2201,13 +2202,13 @@ static zend_never_inline void zend_copy_extra_args(EXECUTE_DATA_D)
static zend_always_inline void zend_init_cvs(uint32_t first, uint32_t last EXECUTE_DATA_DC)
{
if (EXPECTED(first < last)) {
+ uint32_t count = last - first;
zval *var = EX_VAR_NUM(first);
- zval *end = EX_VAR_NUM(last);
do {
ZVAL_UNDEF(var);
var++;
- } while (var != end);
+ } while (--count);
}
}