summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/array_self_add_globals.phpt10
-rw-r--r--Zend/zend_operators.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/Zend/tests/array_self_add_globals.phpt b/Zend/tests/array_self_add_globals.phpt
new file mode 100644
index 0000000000..ebad7c3fdf
--- /dev/null
+++ b/Zend/tests/array_self_add_globals.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Add $GLOBALS to itself
+--FILE--
+<?php
+$GLOBALS += $GLOBALS;
+$x = $GLOBALS + $GLOBALS;
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 45cdc1b11c..7338e471b6 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -903,7 +903,7 @@ try_again:
static zend_never_inline void ZEND_FASTCALL add_function_array(zval *result, zval *op1, zval *op2) /* {{{ */
{
- if ((result == op1) && (result == op2)) {
+ if (result == op1 && Z_ARR_P(op1) == Z_ARR_P(op2)) {
/* $a += $a */
return;
}