Hi Tony, This commit breaks the build, see:
http://windows.php.net/downloads/snaps/trunk-ts-windows-vc9-x86/logs/r309857/compile.txt Not sure yet why it fails. Does it work for you? On Thu, Mar 31, 2011 at 1:59 PM, Antony Dovgal <tony2...@php.net> wrote: > tony2001 Thu, 31 Mar 2011 11:59:34 +0000 > > Revision: http://svn.php.net/viewvc?view=revision&revision=309853 > > Log: > fix bug #54423 (classes from dl()'ed extensions are not destroyed) > > Bug: http://bugs.php.net/54423 (Closed) classes from dl()'ed extensions are > not destroyed > > Changed paths: > U php/php-src/branches/PHP_5_3/NEWS > U php/php-src/branches/PHP_5_3/Zend/zend_API.c > U php/php-src/trunk/Zend/zend_API.c > > Modified: php/php-src/branches/PHP_5_3/NEWS > =================================================================== > --- php/php-src/branches/PHP_5_3/NEWS 2011-03-31 09:00:14 UTC (rev 309852) > +++ php/php-src/branches/PHP_5_3/NEWS 2011-03-31 11:59:34 UTC (rev 309853) > @@ -2,6 +2,8 @@ > ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| > ?? ??? 2011, PHP 5.3.7 > - Zend Engine: > + . Fixed bug #54423 (classes from dl()'ed extensions are not destroyed). > + (Tony, Dmitry) > . Fixed bug #54262 (Crash when assigning value to a dimension in a > non-array). > (Dmitry) > > > Modified: php/php-src/branches/PHP_5_3/Zend/zend_API.c > =================================================================== > --- php/php-src/branches/PHP_5_3/Zend/zend_API.c 2011-03-31 09:00:14 > UTC (rev 309852) > +++ php/php-src/branches/PHP_5_3/Zend/zend_API.c 2011-03-31 11:59:34 > UTC (rev 309853) > @@ -2082,6 +2082,22 @@ > } > /* }}} */ > > +static int clean_module_class(const zend_class_entry **ce, int > *module_number TSRMLS_DC) /* {{{ */ > +{ > + if ((*ce)->type == ZEND_INTERNAL_CLASS && > (*ce)->module->module_number == *module_number) { > + return ZEND_HASH_APPLY_REMOVE; > + } else { > + return ZEND_HASH_APPLY_KEEP; > + } > +} > +/* }}} */ > + > +static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */ > +{ > + zend_hash_apply_with_argument(EG(class_table), (apply_func_arg_t) > clean_module_class, (void *) &module_number TSRMLS_CC); > +} > +/* }}} */ > + > void module_destructor(zend_module_entry *module) /* {{{ */ > { > TSRMLS_FETCH(); > @@ -2089,6 +2105,7 @@ > if (module->type == MODULE_TEMPORARY) { > zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC); > clean_module_constants(module->module_number TSRMLS_CC); > + clean_module_classes(module->module_number TSRMLS_CC); > } > > if (module->module_started && module->module_shutdown_func) { > > Modified: php/php-src/trunk/Zend/zend_API.c > =================================================================== > --- php/php-src/trunk/Zend/zend_API.c 2011-03-31 09:00:14 UTC (rev 309852) > +++ php/php-src/trunk/Zend/zend_API.c 2011-03-31 11:59:34 UTC (rev 309853) > @@ -2208,6 +2208,22 @@ > } > /* }}} */ > > +static int clean_module_class(const zend_class_entry **ce, int > *module_number TSRMLS_DC) /* {{{ */ > +{ > + if ((*ce)->type == ZEND_INTERNAL_CLASS && > (*ce)->module->module_number == *module_number) { > + return ZEND_HASH_APPLY_REMOVE; > + } else { > + return ZEND_HASH_APPLY_KEEP; > + } > +} > +/* }}} */ > + > +static void clean_module_classes(int module_number TSRMLS_DC) /* {{{ */ > +{ > + zend_hash_apply_with_argument(EG(class_table), (apply_func_arg_t) > clean_module_class, (void *) &module_number TSRMLS_CC); > +} > +/* }}} */ > + > void module_destructor(zend_module_entry *module) /* {{{ */ > { > TSRMLS_FETCH(); > @@ -2215,6 +2231,7 @@ > if (module->type == MODULE_TEMPORARY) { > zend_clean_module_rsrc_dtors(module->module_number TSRMLS_CC); > clean_module_constants(module->module_number TSRMLS_CC); > + clean_module_classes(module->module_number TSRMLS_CC); > } > > if (module->module_started && module->module_shutdown_func) { > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- Pierre @pierrejoye | http://blog.thepimp.net | http://www.libgd.org -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php