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]);
 		}
 	}