Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2923:52000679a7aa HEAD
Sync handlers weren't always deinitialized with correct parameters.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 30 Nov 2004 11:20:25 +0200 |
parents | fadf33c24902 |
children | 0e6ecb9d06e0 |
files | src/lib-index/mail-index-sync-update.c |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync-update.c Tue Nov 30 10:59:26 2004 +0200 +++ b/src/lib-index/mail-index-sync-update.c Tue Nov 30 11:20:25 2004 +0200 @@ -120,7 +120,8 @@ static void mail_index_sync_deinit_handlers(struct mail_index_sync_map_ctx *ctx) { - const struct mail_index_sync_handler *sync_handlers; + const struct mail_index_sync_handler *sync_handlers; + const struct mail_index_ext *ext; size_t i, size; if (ctx->extra_context == NULL) @@ -131,10 +132,16 @@ i_assert(size <= ctx->extra_context_buf->used / sizeof(void *)); + ext = ctx->view->map->extensions->data; + i_assert(ctx->view->map->extensions->used / sizeof(*ext) == size); + + /* sync_handlers[] is ordered by index->extensions while + extra_context is ordered by map->extensions. */ for (i = 0; i < size; i++) { if (ctx->extra_context[i] != NULL) { - sync_handlers[i].callback(ctx, 0, NULL, NULL, - &ctx->extra_context[i]); + sync_handlers[ext[i].index_idx]. + callback(ctx, 0, NULL, NULL, + &ctx->extra_context[i]); } }