]> granicus.if.org Git - php/commitdiff
Fixed bug #75698
authorNikita Popov <nikita.ppv@gmail.com>
Sat, 16 Dec 2017 21:04:18 +0000 (22:04 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Sat, 16 Dec 2017 21:04:18 +0000 (22:04 +0100)
NEWS
ext/opcache/Optimizer/dce.c
ext/opcache/tests/bug75698.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 79f9df112f5cb97b3fada7ac3748adcb8e29054b..14f81dcdd1a8e5199a63da0be1036143c3caaa59 100644 (file)
--- 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
index de36537913c864a2e50d0eb8c92f553909bec9a1..6b5b114a34e8ec921966122976ca15142512829d 100644 (file)
@@ -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 (file)
index 0000000..6fd251b
--- /dev/null
@@ -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)
+}