summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2016-11-23 14:24:46 +0800
committerXinchen Hui <laruence@gmail.com>2016-11-23 14:24:46 +0800
commita0b28434ccaafadfdd39a0b51eab5aa4dd693291 (patch)
tree3950b42d6fb2fed3b77150011cdd4926d057aa19 /ext
parent1c733a345f65c34eb05c93af127338c0583d3065 (diff)
downloadphp-git-a0b28434ccaafadfdd39a0b51eab5aa4dd693291.tar.gz
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
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/Optimizer/compact_literals.c2
-rw-r--r--ext/opcache/tests/bug73583.phpt19
2 files changed, 20 insertions, 1 deletions
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