From: Timo Sirainen Date: Wed, 30 Oct 2013 10:11:54 +0000 (+0200) Subject: module-dir: Allow plugins to have deinit() function without init() function X-Git-Tag: 2.2.7~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4e88d2b9eb7b705d09a7f2582e6f71a48160f0f6;p=thirdparty%2Fdovecot%2Fcore.git module-dir: Allow plugins to have deinit() function without init() function --- diff --git a/src/lib/module-dir.c b/src/lib/module-dir.c index 4862e83438..5caf2f3fa8 100644 --- a/src/lib/module-dir.c +++ b/src/lib/module-dir.c @@ -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; + } } }