I guess I'm suffering from some tl;dr here. Here's the short version: please apply the attached patch to the 5.3 branch. It removes some code which is broken and unnecessary.
Index: Zend/zend_execute_API.c =================================================================== --- Zend/zend_execute_API.c (revision 309263) +++ Zend/zend_execute_API.c (working copy) @@ -207,24 +207,9 @@ } /* }}} */ -static int zval_call_destructor(zval **zv TSRMLS_DC) /* {{{ */ -{ - if (Z_TYPE_PP(zv) == IS_OBJECT && Z_REFCOUNT_PP(zv) == 1) { - return ZEND_HASH_APPLY_REMOVE; - } else { - return ZEND_HASH_APPLY_KEEP; - } -} -/* }}} */ - void shutdown_destructors(TSRMLS_D) /* {{{ */ { zend_try { - int symbols; - do { - symbols = zend_hash_num_elements(&EG(symbol_table)); - zend_hash_reverse_apply(&EG(symbol_table), (apply_func_t) zval_call_destructor TSRMLS_CC); - } while (symbols != zend_hash_num_elements(&EG(symbol_table))); zend_objects_store_call_destructors(&EG(objects_store) TSRMLS_CC); } zend_catch { /* if we couldn't destruct cleanly, mark all objects as destructed anyway */
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php