diff options
-rw-r--r-- | Zend/zend.c | 1 | ||||
-rw-r--r-- | Zend/zend_API.c | 23 | ||||
-rw-r--r-- | Zend/zend_modules.h | 1 |
3 files changed, 13 insertions, 12 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 2b28a21eb5..0000caeff4 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -844,6 +844,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); } diff --git a/Zend/zend_API.c b/Zend/zend_API.c index a781e13f64..2ef3db744b 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1552,24 +1552,23 @@ int module_registry_request_startup(zend_module_entry *module TSRMLS_DC) } -/* for persistent modules - call request shutdown and flag NOT to erase - * for temporary modules - do nothing, and flag to erase - */ +/* call request shutdown for all modules */ int module_registry_cleanup(zend_module_entry *module TSRMLS_DC) { - switch (module->type) { - case MODULE_PERSISTENT: - if (module->request_shutdown_func) { + if (module->request_shutdown_func) { #if 0 - zend_printf("%s: Request shutdown\n", module->name); + zend_printf("%s: Request shutdown\n", module->name); #endif - module->request_shutdown_func(module->type, module->module_number TSRMLS_CC); - } - return 0; - break; + module->request_shutdown_func(module->type, module->module_number TSRMLS_CC); + } + return 0; +} + +int module_registry_unload_temp(zend_module_entry *module TSRMLS_DC) +{ + switch (module->type) { case MODULE_TEMPORARY: return 1; - break; } return 0; } diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h index f41f10eed6..ac2f0430c2 100644 --- a/Zend/zend_modules.h +++ b/Zend/zend_modules.h @@ -89,6 +89,7 @@ extern ZEND_API HashTable module_registry; void module_destructor(zend_module_entry *module); int module_registry_cleanup(zend_module_entry *module TSRMLS_DC); int module_registry_request_startup(zend_module_entry *module TSRMLS_DC); +int module_registry_unload_temp(zend_module_entry *module TSRMLS_DC); #define ZEND_MODULE_DTOR (void (*)(void *)) module_destructor #endif |