summaryrefslogtreecommitdiff
path: root/ext/opcache
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 /ext/opcache
parent19d0c5dc9f13028f25f5e743e1d05a2eb57a2ea7 (diff)
downloadphp-git-ee45104dbafc937d944995733f93fd4f160a6922.tar.gz
Fixed bug #75698
Diffstat (limited to 'ext/opcache')
-rw-r--r--ext/opcache/Optimizer/dce.c2
-rw-r--r--ext/opcache/tests/bug75698.phpt31
2 files changed, 31 insertions, 2 deletions
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)
+}