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

Reply via email to