summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend.c1
-rw-r--r--Zend/zend_API.c23
-rw-r--r--Zend/zend_modules.h1
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