]> granicus.if.org Git - php/commitdiff
Optimization of module unloading (temporary modules can be only in the end)
authorDmitry Stogov <dmitry@php.net>
Fri, 17 Mar 2006 08:34:16 +0000 (08:34 +0000)
committerDmitry Stogov <dmitry@php.net>
Fri, 17 Mar 2006 08:34:16 +0000 (08:34 +0000)
Zend/zend.c
Zend/zend_API.c

index fe009ffd7c9dbc9f4471e1d619bb7f13ae097fad..bab26af0d63044ab9af0de8615de5a8397a18eec 100644 (file)
@@ -877,7 +877,7 @@ static int exec_done_cb(zend_module_entry *module TSRMLS_DC)
 void zend_post_deactivate_modules(TSRMLS_D)
 {
        zend_hash_apply(&module_registry, (apply_func_t) exec_done_cb TSRMLS_CC);
-       zend_hash_apply(&module_registry, (apply_func_t) module_registry_unload_temp TSRMLS_CC);
+       zend_hash_reverse_apply(&module_registry, (apply_func_t) module_registry_unload_temp TSRMLS_CC);
 }
 
 
index b6c034a66879cf8524e968335b6ab013bb19017f..106f4934406b985b945536daa49a11f635d4f072 100644 (file)
@@ -1855,11 +1855,7 @@ int module_registry_cleanup(zend_module_entry *module TSRMLS_DC)
 
 int module_registry_unload_temp(zend_module_entry *module TSRMLS_DC)
 {
-       switch (module->type) {
-               case MODULE_TEMPORARY:
-                       return 1;
-       }
-       return 0;
+       return (module->type == MODULE_TEMPORARY) ? ZEND_HASH_APPLY_REMOVE : ZEND_HASH_APPLY_STOP;
 }