diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | ext/opcache/Optimizer/compact_literals.c | 2 | ||||
| -rw-r--r-- | ext/opcache/tests/bug73583.phpt | 19 |
3 files changed, 22 insertions, 1 deletions
@@ -23,6 +23,8 @@ PHP NEWS . Fixed bug #64526 (Add missing mysqlnd.* parameters to php.ini-*). (cmb) - Opcache: + . Fixed bug #73583 (Segfaults when conditionally declared class and function + have the same name). (Laruence) . Fixed bug #69090 (check cached files permissions) - OpenSSL: diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 445b579f59..e59fbb4e17 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -292,7 +292,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx case ZEND_DECLARE_CLASS: case ZEND_DECLARE_INHERITED_CLASS: case ZEND_DECLARE_INHERITED_CLASS_DELAYED: - LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 1, 0, 2); + LITERAL_INFO(opline->op1.constant, LITERAL_VALUE, 0, 0, 2); break; case ZEND_RECV: case ZEND_RECV_VARIADIC: diff --git a/ext/opcache/tests/bug73583.phpt b/ext/opcache/tests/bug73583.phpt new file mode 100644 index 0000000000..e947b451c9 --- /dev/null +++ b/ext/opcache/tests/bug73583.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #73583 (Segfaults when conditionally declared class and function have the same name) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=0x4ff +opcache.file_update_protection=0 +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +if (true) { + class A { } + function A() { } + function A() { } +} +?> +--EXPECTF-- +Fatal error: Cannot redeclare A() (previously declared in %sbug73583.php:4) in %sbug73583.php on line 5 |
