]> granicus.if.org Git - php/commitdiff
Fix bug #47143, bug #51458 - provide more useful info in bad exception cases
authorStanislav Malyshev <stas@php.net>
Sun, 16 Jan 2011 21:24:43 +0000 (21:24 +0000)
committerStanislav Malyshev <stas@php.net>
Sun, 16 Jan 2011 21:24:43 +0000 (21:24 +0000)
NEWS
Zend/tests/exception_handler_002.phpt
Zend/zend_exceptions.c

diff --git a/NEWS b/NEWS
index 34f08317eb49a5f4e2a1acc1727b61de9c73a818..3d72f72d5185a547a73280301afac918f5386548 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,9 @@
     in method. (Scott)
   . Added options to debug backtrace functions. (Stas)
   . Fixed Bug #53629 (memory leak inside highlight_string()). (Hannes, Ilia)
+  . Fixed Bug #51458 (Lack of error context with nested exceptions). (Stas)
+  . Fixed Bug #47143 (Throwing an exception in a destructor causes a fatal error).
+    (Stas)
 
 - Core:
   . Fixed bug #48484 (array_product() always returns 0 for an empty array).
index 3e0e4f00dd908111822ea47232e63db482b0cb9c..7dfbb38fd189a49a82a781569cc0e4284c42cc06 100644 (file)
@@ -20,4 +20,8 @@ echo "Done\n";
 --EXPECTF--    
 string(12) "test thrown!"
 
-Fatal error: Exception thrown without a stack frame in Unknown on line 0
+Fatal error: Uncaught exception 'Exception' in %sexception_handler_002.php:7
+Stack trace:
+#0 [internal function]: foo(Object(test))
+#1 {main}
+  thrown in %sexception_handler_002.php on line %d
index 261e3111b63c24172422e666b353040cc153007b..95ff0ab178c7b5fc5988cedd96632f156b05db64 100644 (file)
@@ -91,6 +91,9 @@ void zend_throw_exception_internal(zval *exception TSRMLS_DC) /* {{{ */
                }
        }
        if (!EG(current_execute_data)) {
+               if(EG(exception)) {
+                       zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
+               }
                zend_error(E_ERROR, "Exception thrown without a stack frame");
        }