summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_operators.c2
-rw-r--r--ext/standard/tests/array/array_sum_on_reference.phpt15
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"