From: Aki Tuomi Date: Mon, 20 Feb 2017 13:35:02 +0000 (+0200) Subject: lib-index: Add missing initialization for chained hooks X-Git-Tag: 2.3.0.rc1~2041 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=26e5bdf37d7d0deed1e2e8483366c83631b9d251;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Add missing initialization for chained hooks --- diff --git a/src/lib-index/mail-index-transaction-private.h b/src/lib-index/mail-index-transaction-private.h index eb3025668e..53c4ccc842 100644 --- a/src/lib-index/mail-index-transaction-private.h +++ b/src/lib-index/mail-index-transaction-private.h @@ -26,6 +26,7 @@ struct mail_index_transaction_vfuncs { }; union mail_index_transaction_module_context { + struct mail_index_transaction_vfuncs super; struct mail_index_module_register *reg; }; @@ -40,7 +41,7 @@ struct mail_index_transaction { int refcount; enum mail_index_transaction_flags flags; - struct mail_index_transaction_vfuncs v; + struct mail_index_transaction_vfuncs v, *vlast; struct mail_index_view *view; struct mail_index_view *latest_view; diff --git a/src/lib-index/mail-index-transaction.c b/src/lib-index/mail-index-transaction.c index c7441dca52..ca61b14da1 100644 --- a/src/lib-index/mail-index-transaction.c +++ b/src/lib-index/mail-index-transaction.c @@ -3,6 +3,7 @@ #include "lib.h" #include "ioloop.h" #include "array.h" +#include "hook-build.h" #include "bsearch-insert-pos.h" #include "llist.h" #include "mail-index-private.h" @@ -349,10 +350,15 @@ mail_index_transaction_begin(struct mail_index_view *view, DLLIST_PREPEND(&view->transactions_list, t); if (array_is_created(&hook_mail_index_transaction_created)) { + struct hook_build_context *ctx = + hook_build_init((void *)&t->v, sizeof(t->v)); const hook_mail_index_transaction_created_t *const *ptr; array_foreach(&hook_mail_index_transaction_created, ptr) { (*ptr)(t); + hook_build_update(ctx, t->vlast); } + t->vlast = NULL; + hook_build_deinit(&ctx); } return t; }