# HG changeset patch # User Timo Sirainen # Date 1453474133 -7200 # Node ID d80976d7fec028d99d0b8bed49644b1cd1a0f681 # Parent c996bc091c6bb5b412e933dd8e8edd52a3904e3c doveadm: Make sure all mail storage hooks are freed at deinit. diff -r c996bc091c6b -r d80976d7fec0 src/doveadm/doveadm-mail.c --- a/src/doveadm/doveadm-mail.c Mon Jan 18 15:50:23 2016 +0200 +++ b/src/doveadm/doveadm-mail.c Fri Jan 22 16:48:53 2016 +0200 @@ -17,6 +17,7 @@ #include "mail-storage.h" #include "mail-storage-settings.h" #include "mail-storage-service.h" +#include "mail-storage-hooks.h" #include "mail-search-build.h" #include "mail-search-parser.h" #include "mailbox-list-iter.h" @@ -843,5 +844,6 @@ void doveadm_mail_deinit(void) { + mail_storage_hooks_deinit(); array_free(&doveadm_mail_cmds); } diff -r c996bc091c6b -r d80976d7fec0 src/lib-storage/mail-storage-hooks.c --- a/src/lib-storage/mail-storage-hooks.c Mon Jan 18 15:50:23 2016 +0200 +++ b/src/lib-storage/mail-storage-hooks.c Fri Jan 22 16:48:53 2016 +0200 @@ -49,8 +49,14 @@ void mail_storage_hooks_deinit(void) { - array_free(&internal_hooks); - array_free(&module_hooks); + /* allow calling this even if mail_storage_hooks_init() hasn't been + called, because e.g. doveadm plugins could call + mail_storage_hooks_add() even though mail storage is never + initialized. */ + if (array_is_created(&internal_hooks)) + array_free(&internal_hooks); + if (array_is_created(&module_hooks)) + array_free(&module_hooks); } void mail_storage_hooks_add(struct module *module,