summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2015-06-16 18:01:11 +0200
committerNikita Popov <nikic@php.net>2015-06-16 18:02:45 +0200
commit183c00ddb63a5a7b016f502fc3840010bd49f991 (patch)
tree721e6ad6da99fd1bbbaf1d2342ffcdec2c7561bc
parent44b7489fefe1f377a2b5aacca5461fede3298cea (diff)
downloadphp-git-183c00ddb63a5a7b016f502fc3840010bd49f991.tar.gz
Fix references handling in convert_scalar_to_number
-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"