summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/assign_concat_array_empty_string.phpt13
-rw-r--r--Zend/zend_operators.c3
2 files changed, 16 insertions, 0 deletions
diff --git a/Zend/tests/assign_concat_array_empty_string.phpt b/Zend/tests/assign_concat_array_empty_string.phpt
new file mode 100644
index 0000000000..6e551d9039
--- /dev/null
+++ b/Zend/tests/assign_concat_array_empty_string.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Assign concat of array and empty string
+--FILE--
+<?php
+
+$a = [0];
+$a .= '';
+var_dump($a);
+
+?>
+--EXPECTF--
+Warning: Array to string conversion in %s on line %d
+string(5) "Array"
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 7de4cd8ad7..4d20d56464 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1861,6 +1861,9 @@ ZEND_API zend_result ZEND_FASTCALL concat_function(zval *result, zval *op1, zval
}
} else if (UNEXPECTED(Z_STRLEN_P(op2) == 0)) {
if (EXPECTED(result != op1)) {
+ if (result == orig_op1) {
+ i_zval_ptr_dtor(result);
+ }
ZVAL_COPY(result, op1);
}
} else {