]> granicus.if.org Git - php/commitdiff
- Fixed bug #55007 (compiler fail after previous fail)
authorFelipe Pena <felipe@php.net>
Tue, 7 Jun 2011 22:58:38 +0000 (22:58 +0000)
committerFelipe Pena <felipe@php.net>
Tue, 7 Jun 2011 22:58:38 +0000 (22:58 +0000)
Zend/tests/bug55007.phpt [new file with mode: 0644]
Zend/zend.c

diff --git a/Zend/tests/bug55007.phpt b/Zend/tests/bug55007.phpt
new file mode 100644 (file)
index 0000000..12fbf12
--- /dev/null
@@ -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.
index fbffcc38d2653c7ab461b118a5cd3f3bf62ec8d9..1ad2baf06623aa1fd4c5d1fb2e7eae64d8772e1b 100644 (file)
@@ -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);