]> granicus.if.org Git - php/commitdiff
Fix references handling in convert_scalar_to_number
authorNikita Popov <nikic@php.net>
Tue, 16 Jun 2015 16:01:11 +0000 (18:01 +0200)
committerNikita Popov <nikic@php.net>
Tue, 16 Jun 2015 16:02:45 +0000 (18:02 +0200)
Zend/zend_operators.c
ext/standard/tests/array/array_sum_on_reference.phpt [new file with mode: 0644]

index a6172179f5bd9e0c1916d0187a5437136cecfece..3176cb505b7d1001216260001b782031a0628d8d 100644 (file)
@@ -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 (file)
index 0000000..a11da5f
--- /dev/null
@@ -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"