diff --git a/NEWS b/NEWS index 26793374249..f17b01b022e 100644 --- a/NEWS +++ b/NEWS @@ -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 445b579f592..e59fbb4e17b 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 00000000000..e947b451c98 --- /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-- + +--FILE-- + +--EXPECTF-- +Fatal error: Cannot redeclare A() (previously declared in %sbug73583.php:4) in %sbug73583.php on line 5