diff options
-rw-r--r-- | Zend/zend_operators.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/array/array_sum_on_reference.phpt | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index a6172179f5..3176cb505b 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -144,7 +144,7 @@ try_again: ZVAL_UNREF(op); } else { Z_DELREF_P(op); - ZVAL_COPY_VALUE(op, Z_REFVAL_P(op)); + ZVAL_COPY(op, Z_REFVAL_P(op)); } goto try_again; case IS_STRING: diff --git a/ext/standard/tests/array/array_sum_on_reference.phpt b/ext/standard/tests/array/array_sum_on_reference.phpt new file mode 100644 index 0000000000..a11da5fdab --- /dev/null +++ b/ext/standard/tests/array/array_sum_on_reference.phpt @@ -0,0 +1,15 @@ +--TEST-- +array_sum() on array with references +--FILE-- +<?php + +$n = "10"; +$n .= "0"; +$nums = [&$n, 100]; +var_dump(array_sum($nums)); +var_dump($n); + +?> +--EXPECT-- +int(200) +string(3) "100" |