# HG changeset patch # User Aki Tuomi # Date 1487597702 -7200 # Node ID 69f21a7bd37e8c1a04c241c7ef45e39c18c0e84a # Parent 538853d829269597a8c485dfeeca2768ed5ceb94 lib-index: Add missing initialization for chained hooks diff -r 538853d82926 -r 69f21a7bd37e src/lib-index/mail-index-transaction-private.h --- a/src/lib-index/mail-index-transaction-private.h Mon Feb 20 15:28:36 2017 +0200 +++ b/src/lib-index/mail-index-transaction-private.h Mon Feb 20 15:35:02 2017 +0200 @@ -26,6 +26,7 @@ }; union mail_index_transaction_module_context { + struct mail_index_transaction_vfuncs super; struct mail_index_module_register *reg; }; @@ -40,7 +41,7 @@ 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 -r 538853d82926 -r 69f21a7bd37e src/lib-index/mail-index-transaction.c --- a/src/lib-index/mail-index-transaction.c Mon Feb 20 15:28:36 2017 +0200 +++ b/src/lib-index/mail-index-transaction.c Mon Feb 20 15:35:02 2017 +0200 @@ -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 @@ 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; }