cvs: ZendEngine2(PHP_5_3) / zend.h zend_API.c zend_globals.h
"Marcus Boerger" <[email protected]>
| Newsgroups | gmane.comp.php.cvs.zend |
|---|---|
| Message-ID | <cvshelly1218475160@cvsserver> |
helly Mon Aug 11 17:19:20 2008 UTC
Modified files: (Branch: PHP_5_3)
/ZendEngine2 zend.h zend_API.c zend_globals.h
Log:
- MFH Fix memleak with new error handling stack'ing
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?r1=1.293.2.11.2.9.2.25&r2=1.293.2.11.2.9.2.26&diff_format=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.293.2.11.2.9.2.25 ZendEngine2/zend.h:1.293.2.11.2.9.2.26
--- ZendEngine2/zend.h:1.293.2.11.2.9.2.25 Fri Aug 8 17:47:26 2008
+++ ZendEngine2/zend.h Mon Aug 11 17:19:19 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.h,v 1.293.2.11.2.9.2.25 2008/08/08 17:47:26 helly Exp $ */
+/* $Id: zend.h,v 1.293.2.11.2.9.2.26 2008/08/11 17:19:19 helly Exp $ */
#ifndef ZEND_H
#define ZEND_H
@@ -752,11 +752,12 @@
typedef struct {
zend_error_handling_t handling;
zend_class_entry *exception;
+ zval *user_handler;
} zend_error_handling;
ZEND_API void zend_save_error_handling(zend_error_handling *current TSRMLS_DC);
ZEND_API void zend_replace_error_handling(zend_error_handling_t error_handling, zend_class_entry *exception_class, zend_error_handling *current TSRMLS_DC);
-ZEND_API void zend_restore_error_handling(const zend_error_handling *saved TSRMLS_DC);
+ZEND_API void zend_restore_error_handling(zend_error_handling *saved TSRMLS_DC);
#endif /* ZEND_H */
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_API.c?r1=1.296.2.27.2.34.2.48&r2=1.296.2.27.2.34.2.49&diff_format=u
Index: ZendEngine2/zend_API.c
diff -u ZendEngine2/zend_API.c:1.296.2.27.2.34.2.48 ZendEngine2/zend_API.c:1.296.2.27.2.34.2.49
--- ZendEngine2/zend_API.c:1.296.2.27.2.34.2.48 Fri Aug 8 17:47:28 2008
+++ ZendEngine2/zend_API.c Mon Aug 11 17:19:19 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_API.c,v 1.296.2.27.2.34.2.48 2008/08/08 17:47:28 helly Exp $ */
+/* $Id: zend_API.c,v 1.296.2.27.2.34.2.49 2008/08/11 17:19:19 helly Exp $ */
#include "zend.h"
#include "zend_execute.h"
@@ -3467,6 +3467,10 @@
{
current->handling = EG(error_handling);
current->exception = EG(exception_class);
+ current->user_handler = EG(user_error_handler);
+ if (current->user_handler) {
+ Z_ADDREF_P(current->user_handler);
+ }
}
/* }}} */
@@ -3474,23 +3478,29 @@
{
if (current) {
zend_save_error_handling(current TSRMLS_CC);
+ if (error_handling != EH_NORMAL && EG(user_error_handler)) {
+ zval_ptr_dtor(&EG(user_error_handler));
+ EG(user_error_handler) = NULL;
+ }
}
EG(error_handling) = error_handling;
EG(exception_class) = error_handling == EH_THROW ? exception_class : NULL;
-
- if (error_handling == EH_NORMAL) {
- EG(user_error_handler) = EG(user_error_handler_old);
- } else {
- EG(user_error_handler_old) = EG(user_error_handler);
- EG(user_error_handler) = NULL;
- }
}
/* }}} */
-ZEND_API void zend_restore_error_handling(const zend_error_handling *saved TSRMLS_DC) /* {{{ */
+ZEND_API void zend_restore_error_handling(zend_error_handling *saved TSRMLS_DC) /* {{{ */
{
EG(error_handling) = saved->handling;
EG(exception_class) = saved->handling == EH_THROW ? saved->exception : NULL;
+ if (saved->user_handler && saved->user_handler != EG(user_error_handler)) {
+ if (EG(user_error_handler)) {
+ zval_ptr_dtor(&EG(user_error_handler));
+ }
+ EG(user_error_handler) = saved->user_handler;
+ } else if (saved->user_handler) {
+ zval_ptr_dtor(&saved->user_handler);
+ }
+ saved->user_handler = NULL;
}
/* }}} */
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_globals.h?r1=1.141.2.3.2.7.2.17&r2=1.141.2.3.2.7.2.18&diff_format=u
Index: ZendEngine2/zend_globals.h
diff -u ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.17 ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.18
--- ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.17 Thu Jul 24 22:21:38 2008
+++ ZendEngine2/zend_globals.h Mon Aug 11 17:19:20 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_globals.h,v 1.141.2.3.2.7.2.17 2008/07/24 22:21:38 moriyoshi Exp $ */
+/* $Id: zend_globals.h,v 1.141.2.3.2.7.2.18 2008/08/11 17:19:20 helly Exp $ */
#ifndef ZEND_GLOBALS_H
#define ZEND_GLOBALS_H
@@ -222,7 +222,6 @@
int user_error_handler_error_reporting;
zval *user_error_handler;
- zval *user_error_handler_old;
zval *user_exception_handler;
zend_stack user_error_handlers_error_reporting;
zend_ptr_stack user_error_handlers;
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php