]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
module-dir: Allow plugins to have deinit() function without init() function
authorTimo Sirainen <tss@iki.fi>
Wed, 30 Oct 2013 10:11:54 +0000 (12:11 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 30 Oct 2013 10:11:54 +0000 (12:11 +0200)
src/lib/module-dir.c

index 4862e83438086916c44aa8d9281eb2679e2fb56c..5caf2f3fa8a1bc0c327cc92112678a2ad66ca6c9 100644 (file)
@@ -242,7 +242,7 @@ module_load(const char *path, const char *name,
        module->init = (void (*)(struct module *))
                get_symbol(module, t_strconcat(name, "_init", NULL),
                           !set->require_init_funcs);
-       module->deinit = module->init == NULL ? NULL : (void (*)(void))
+       module->deinit = (void (*)(void))
                get_symbol(module, t_strconcat(name, "_deinit", NULL),
                           !set->require_init_funcs);
 
@@ -492,10 +492,12 @@ void module_dir_init(struct module *modules)
        struct module *module;
 
        for (module = modules; module != NULL; module = module->next) {
-               if (module->init != NULL && !module->initialized) T_BEGIN {
+               if (!module->initialized) {
                        module->initialized = TRUE;
-                       module->init(module);
-               } T_END;
+                       if (module->init != NULL) T_BEGIN {
+                               module->init(module);
+                       } T_END;
+               }
        }
 }