sniper Sun Apr 24 10:49:01 2005 EDT
Modified files: (Branch: PHP_5_0)
/ZendEngine2 zend.c zend.h zend_execute.h zend_execute_API.c
/ZendEngine2/tests bug20240.phpt
/php-src/main main.c
Log:
MFH: - Execute destructors earlier
http://cvs.php.net/diff.php/ZendEngine2/zend.c?r1=1.287.2.4&r2=1.287.2.5&ty=u
Index: ZendEngine2/zend.c
diff -u ZendEngine2/zend.c:1.287.2.4 ZendEngine2/zend.c:1.287.2.5
--- ZendEngine2/zend.c:1.287.2.4 Tue Mar 15 18:47:12 2005
+++ ZendEngine2/zend.c Sun Apr 24 10:49:00 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.c,v 1.287.2.4 2005/03/15 23:47:12 wez Exp $ */
+/* $Id: zend.c,v 1.287.2.5 2005/04/24 14:49:00 sniper Exp $ */
#include "zend.h"
#include "zend_extensions.h"
@@ -803,6 +803,13 @@
} zend_end_try();
}
+void zend_call_destructors(TSRMLS_D)
+{
+ zend_try {
+ shutdown_destructors(TSRMLS_C);
+ } zend_end_try();
+}
+
void zend_deactivate(TSRMLS_D)
{
/* we're no longer executing anything */
http://cvs.php.net/diff.php/ZendEngine2/zend.h?r1=1.257.2.23&r2=1.257.2.24&ty=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.257.2.23 ZendEngine2/zend.h:1.257.2.24
--- ZendEngine2/zend.h:1.257.2.23 Thu Mar 10 06:30:44 2005
+++ ZendEngine2/zend.h Sun Apr 24 10:49:00 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.h,v 1.257.2.23 2005/03/10 11:30:44 hyanantha Exp $ */
+/* $Id: zend.h,v 1.257.2.24 2005/04/24 14:49:00 sniper Exp $ */
#ifndef ZEND_H
#define ZEND_H
@@ -452,6 +452,7 @@
void zend_activate(TSRMLS_D);
void zend_deactivate(TSRMLS_D);
+void zend_call_destructors(TSRMLS_D);
void zend_activate_modules(TSRMLS_D);
void zend_deactivate_modules(TSRMLS_D);
void zend_post_deactivate_modules(TSRMLS_D);
http://cvs.php.net/diff.php/ZendEngine2/zend_execute.h?r1=1.72&r2=1.72.2.1&ty=u
Index: ZendEngine2/zend_execute.h
diff -u ZendEngine2/zend_execute.h:1.72 ZendEngine2/zend_execute.h:1.72.2.1
--- ZendEngine2/zend_execute.h:1.72 Tue Mar 16 05:14:52 2004
+++ ZendEngine2/zend_execute.h Sun Apr 24 10:49:00 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.h,v 1.72 2004/03/16 10:14:52 helly Exp $ */
+/* $Id: zend_execute.h,v 1.72.2.1 2005/04/24 14:49:00 sniper Exp $ */
#ifndef ZEND_EXECUTE_H
#define ZEND_EXECUTE_H
@@ -49,6 +49,7 @@
void init_executor(TSRMLS_D);
void shutdown_executor(TSRMLS_D);
+void shutdown_destructors(TSRMLS_D);
ZEND_API void execute(zend_op_array *op_array TSRMLS_DC);
ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int
return_value_used TSRMLS_DC);
ZEND_API int zend_is_true(zval *op);
http://cvs.php.net/diff.php/ZendEngine2/zend_execute_API.c?r1=1.287.2.12&r2=1.287.2.13&ty=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.287.2.12
ZendEngine2/zend_execute_API.c:1.287.2.13
--- ZendEngine2/zend_execute_API.c:1.287.2.12 Sun Apr 3 17:57:06 2005
+++ ZendEngine2/zend_execute_API.c Sun Apr 24 10:49:00 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute_API.c,v 1.287.2.12 2005/04/03 21:57:06 sniper Exp $ */
+/* $Id: zend_execute_API.c,v 1.287.2.13 2005/04/24 14:49:00 sniper Exp $ */
#include <stdio.h>
#include <signal.h>
@@ -185,6 +185,15 @@
EG(This) = NULL;
}
+void shutdown_destructors(TSRMLS_D) {
+ zend_try {
+ zend_objects_store_call_destructors(&EG(objects_store)
TSRMLS_CC);
+ } zend_catch {
+ /* if we couldn't destruct cleanly, mark all objects as
destructed anyway */
+ zend_objects_store_mark_destructed(&EG(objects_store)
TSRMLS_CC);
+ } zend_end_try();
+}
+
void shutdown_executor(TSRMLS_D)
{
zend_try {
@@ -204,7 +213,6 @@
}
*/
zend_llist_apply(&zend_extensions, (llist_apply_func_t)
zend_extension_deactivator TSRMLS_CC);
- zend_objects_store_call_destructors(&EG(objects_store)
TSRMLS_CC);
zend_hash_graceful_reverse_destroy(&EG(symbol_table));
} zend_catch {
/* if we couldn't destruct cleanly, mark all objects as
destructed anyway */
http://cvs.php.net/diff.php/ZendEngine2/tests/bug20240.phpt?r1=1.4&r2=1.4.2.1&ty=u
Index: ZendEngine2/tests/bug20240.phpt
diff -u ZendEngine2/tests/bug20240.phpt:1.4
ZendEngine2/tests/bug20240.phpt:1.4.2.1
--- ZendEngine2/tests/bug20240.phpt:1.4 Sun Nov 30 08:18:56 2003
+++ ZendEngine2/tests/bug20240.phpt Sun Apr 24 10:49:00 2005
@@ -39,5 +39,5 @@
2
3
Done
-test::destructor
test::__destruct
+test::destructor
http://cvs.php.net/diff.php/php-src/main/main.c?r1=1.604.2.12&r2=1.604.2.13&ty=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.604.2.12 php-src/main/main.c:1.604.2.13
--- php-src/main/main.c:1.604.2.12 Tue Apr 19 13:33:16 2005
+++ php-src/main/main.c Sun Apr 24 10:49:00 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: main.c,v 1.604.2.12 2005/04/19 17:33:16 andrey Exp $ */
+/* $Id: main.c,v 1.604.2.13 2005/04/24 14:49:00 sniper Exp $ */
/* {{{ includes
*/
@@ -1193,6 +1193,10 @@
sapi_send_headers(TSRMLS_C);
} zend_end_try();
+ zend_try {
+ zend_call_destructors(TSRMLS_C);
+ } zend_end_try();
+
if (PG(modules_activated)) zend_try {
php_call_shutdown_functions(TSRMLS_C);
} zend_end_try();
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php