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
This commit is contained in:
Xinchen Hui 2016-11-23 14:24:46 +08:00
parent 1c733a345f
commit a0b28434cc
3 changed files with 22 additions and 1 deletions

2
NEWS
View file

@ -23,6 +23,8 @@ PHP NEWS
. Fixed bug #64526 (Add missing mysqlnd.* parameters to php.ini-*). (cmb) . Fixed bug #64526 (Add missing mysqlnd.* parameters to php.ini-*). (cmb)
- Opcache: - Opcache:
. Fixed bug #73583 (Segfaults when conditionally declared class and function
have the same name). (Laruence)
. Fixed bug #69090 (check cached files permissions) . Fixed bug #69090 (check cached files permissions)
- OpenSSL: - OpenSSL:

View file

@ -292,7 +292,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
case ZEND_DECLARE_CLASS: case ZEND_DECLARE_CLASS:
case ZEND_DECLARE_INHERITED_CLASS: case ZEND_DECLARE_INHERITED_CLASS:
case ZEND_DECLARE_INHERITED_CLASS_DELAYED: 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; break;
case ZEND_RECV: case ZEND_RECV:
case ZEND_RECV_VARIADIC: case ZEND_RECV_VARIADIC:

View file

@ -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