Attached is the patch I'm thinking of. If nobody objects, I think I'll
apply it on Friday.

AD>>Sounds quite nice.
AD>>Will look at it later a bit.
AD>>
AD>>

-- 
Stanislav Malyshev, Zend Products Engineer
[EMAIL PROTECTED]  http://www.zend.com/ +972-3-6139665 ext.115

Index: zend_execute_API.c
===================================================================
RCS file: /repository/ZendEngine2/zend_execute_API.c,v
retrieving revision 1.295
diff -u -b -r1.295 zend_execute_API.c
--- zend_execute_API.c  9 Sep 2004 16:47:22 -0000       1.295
+++ zend_execute_API.c  13 Sep 2004 11:19:24 -0000
@@ -190,6 +190,9 @@
 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();
 }
 
Index: zend_objects_API.c
===================================================================
RCS file: /repository/ZendEngine2/zend_objects_API.c,v
retrieving revision 1.42
diff -u -b -r1.42 zend_objects_API.c
--- zend_objects_API.c  25 Jul 2004 17:25:44 -0000      1.42
+++ zend_objects_API.c  13 Sep 2004 11:19:24 -0000
@@ -58,6 +58,16 @@
        }
 }
 
+ZEND_API void zend_objects_store_mark_destructed(zend_objects_store *objects 
TSRMLS_DC)
+{
+       zend_uint i = 1;
+
+       for (i = 1; i < objects->top ; i++) {
+               if (objects->object_buckets[i].valid) {
+                       objects->object_buckets[i].destructor_called = 1;
+               }
+       }
+}
 
 ZEND_API void zend_objects_store_free_object_storage(zend_objects_store *objects 
TSRMLS_DC)
 {
Index: zend_objects_API.h
===================================================================
RCS file: /repository/ZendEngine2/zend_objects_API.h,v
retrieving revision 1.15
diff -u -b -r1.15 zend_objects_API.h
--- zend_objects_API.h  25 Jul 2004 17:25:44 -0000      1.15
+++ zend_objects_API.h  13 Sep 2004 11:19:24 -0000
@@ -57,6 +57,7 @@
 BEGIN_EXTERN_C()
 ZEND_API void zend_objects_store_init(zend_objects_store *objects, zend_uint 
init_size);
 ZEND_API void zend_objects_store_call_destructors(zend_objects_store *objects 
TSRMLS_DC);
+ZEND_API void zend_objects_store_mark_destructed(zend_objects_store *objects 
TSRMLS_DC);
 ZEND_API void zend_objects_store_destroy(zend_objects_store *objects);
 
 /* Store API functions */
-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to