From a0b28434ccaafadfdd39a0b51eab5aa4dd693291 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 23 Nov 2016 14:24:46 +0800 Subject: [PATCH] Fixed bug #73583 (Segfaults when conditionally declared class and function have the same name) bug was introduced in rev 88eae43f , and the runtime defined key is not merged-able --- NEWS | 2 ++ ext/opcache/Optimizer/compact_literals.c | 2 +- ext/opcache/tests/bug73583.phpt | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 ext/opcache/tests/bug73583.phpt diff --git a/NEWS b/NEWS index 2679337424952..f17b01b022ec7 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 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