diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 445b579f59245..e59fbb4e17bf1 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 0000000000000..e947b451c98dc --- /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