]> granicus.if.org Git - php/commitdiff
MFH: dl()'d module shutdown fix
authorWez Furlong <wez@php.net>
Tue, 15 Mar 2005 23:47:12 +0000 (23:47 +0000)
committerWez Furlong <wez@php.net>
Tue, 15 Mar 2005 23:47:12 +0000 (23:47 +0000)
Zend/zend.c
Zend/zend_API.c
Zend/zend_modules.h

index b0d60601e3f436bf9c20263dbbf2d3cb5f5fb34f..3467b61a04035431412920dca1433c88a09e77c4 100644 (file)
@@ -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);
 }
 
 
index cbc88eea990b973ef69433945baf04f050dd2a03..b588944d5fb59b2261d5be72196311b6ad5848ab 100644 (file)
@@ -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;
 }
index 2ee34ded9d7db492f7a679b70f55377fdfe0a5ce..213d74328e17463a6a493a4b9ee49d8fbdb79655 100644 (file)
@@ -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