From 8c9a6e14364439d45f40e48f334febbd9d8d632f Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Tue, 15 Mar 2005 23:47:12 +0000 Subject: [PATCH] MFH: dl()'d module shutdown fix --- Zend/zend.c | 1 + Zend/zend_API.c | 23 +++++++++++------------ Zend/zend_modules.h | 1 + 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Zend/zend.c b/Zend/zend.c index b0d60601e3..3467b61a04 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -838,6 +838,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 cbc88eea99..b588944d5f 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1528,24 +1528,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 2ee34ded9d..213d74328e 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 -- 2.50.1