summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2011-06-07 22:58:38 +0000
committerFelipe Pena <felipe@php.net>2011-06-07 22:58:38 +0000
commitbf07dcd506f4a8b7e1bf4601e1c75a20dca106f4 (patch)
tree9a79f97790fb969ec0573fcb0eb5abcc5fac8e93
parentb800ad040c22c95a9c00b70b9f275a3dd39066ac (diff)
downloadphp-git-bf07dcd506f4a8b7e1bf4601e1c75a20dca106f4.tar.gz
- Fixed bug #55007 (compiler fail after previous fail)
-rw-r--r--Zend/tests/bug55007.phpt23
-rw-r--r--Zend/zend.c1
2 files changed, 24 insertions, 0 deletions
diff --git a/Zend/tests/bug55007.phpt b/Zend/tests/bug55007.phpt
new file mode 100644
index 0000000000..12fbf120a8
--- /dev/null
+++ b/Zend/tests/bug55007.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #55007 (compiler fail after previous fail)
+--FILE--
+<?php
+
+function __autoload($classname) {
+ if ('CompileErrorClass'==$classname) eval('class CompileErrorClass { function foo() { $a[] } }');
+ if ('MyErrorHandler'==$classname) eval('class MyErrorHandler { function __construct() { print "My error handler runs.\n"; } }');
+}
+
+function shutdown() {
+ new MyErrorHandler();
+}
+
+
+register_shutdown_function('shutdown');
+
+new CompileErrorClass();
+
+?>
+--EXPECTF--
+Fatal error: Cannot use [] for reading in %s(%d) : eval()'d code on line %d
+My error handler runs.
diff --git a/Zend/zend.c b/Zend/zend.c
index fbffcc38d2..1ad2baf066 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -857,6 +857,7 @@ ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */
exit(-1);
}
CG(unclean_shutdown) = 1;
+ CG(active_class_entry) = NULL;
CG(in_compilation) = EG(in_execution) = 0;
EG(current_execute_data) = NULL;
LONGJMP(*EG(bailout), FAILURE);