summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-12-16 22:04:18 +0100
committerNikita Popov <nikita.ppv@gmail.com>2017-12-16 22:04:18 +0100
commitee45104dbafc937d944995733f93fd4f160a6922 (patch)
treed40243bdc3a77003f3d4109a2fb159923dd4ab4f
parent19d0c5dc9f13028f25f5e743e1d05a2eb57a2ea7 (diff)
downloadphp-git-ee45104dbafc937d944995733f93fd4f160a6922.tar.gz
Fixed bug #75698
-rw-r--r--NEWS1
-rw-r--r--ext/opcache/Optimizer/dce.c2
-rw-r--r--ext/opcache/tests/bug75698.phpt31
3 files changed, 32 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 79f9df112f..14f81dcdd1 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ PHP NEWS
- Opcache:
. Fixed bug #75687 (var 8 (TMP) has array key type but not value type).
(Laruence)
+ . Fixed bug #75698 (Using @ crashes php7.2-fpm). (Nikita)
- PGSQL:
. Fixed bug #75671 (pg_version() crashes when called on a connection to
diff --git a/ext/opcache/Optimizer/dce.c b/ext/opcache/Optimizer/dce.c
index de36537913..6b5b114a34 100644
--- a/ext/opcache/Optimizer/dce.c
+++ b/ext/opcache/Optimizer/dce.c
@@ -311,9 +311,7 @@ static zend_bool try_remove_var_def(context *ctx, int free_var, int use_chain, z
case ZEND_ASSIGN_BW_XOR:
case ZEND_ASSIGN_POW:
case ZEND_PRE_INC:
- case ZEND_POST_INC:
case ZEND_PRE_DEC:
- case ZEND_POST_DEC:
case ZEND_PRE_INC_OBJ:
case ZEND_POST_INC_OBJ:
case ZEND_PRE_DEC_OBJ:
diff --git a/ext/opcache/tests/bug75698.phpt b/ext/opcache/tests/bug75698.phpt
new file mode 100644
index 0000000000..6fd251bc0a
--- /dev/null
+++ b/ext/opcache/tests/bug75698.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Bug #75698: Using @ crashes php7.2-fpm
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.optimization_level=-1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+function test() {
+ $a = array("a","b","c","b");
+ $b = array();
+ foreach ($a as $c)
+ @$b[$c]++; // the @ is required to crash PHP 7.2.0
+ var_dump($b);
+}
+
+test();
+
+?>
+--EXPECT--
+array(3) {
+ ["a"]=>
+ int(1)
+ ["b"]=>
+ int(2)
+ ["c"]=>
+ int(1)
+}