# HG changeset patch # User Timo Sirainen # Date 1089894391 -10800 # Node ID ea745d0c9c4b7abb5cc2d65b09e907913fe8c0d3 # Parent ec1dac19cb069f31d1331e5f5670eb3764f62a1e Delay memory allocations for cache transaction. We don't always need it. diff -r ec1dac19cb06 -r ea745d0c9c4b src/lib-index/mail-cache-transaction.c --- a/src/lib-index/mail-cache-transaction.c Mon Jul 12 21:14:45 2004 +0300 +++ b/src/lib-index/mail-cache-transaction.c Thu Jul 15 15:26:31 2004 +0300 @@ -45,10 +45,6 @@ ctx->cache = view->cache; ctx->view = view; ctx->trans = t; - ctx->cache_data = - buffer_create_dynamic(system_pool, 32768, (size_t)-1); - ctx->cache_data_seq = - buffer_create_dynamic(system_pool, 256, (size_t)-1); ctx->reservations = buffer_create_dynamic(system_pool, 256, (size_t)-1); @@ -64,8 +60,10 @@ ctx->view->transaction = NULL; ctx->view->trans_seq1 = ctx->view->trans_seq2 = 0; - buffer_free(ctx->cache_data); - buffer_free(ctx->cache_data_seq); + if (ctx->cache_data != NULL) + buffer_free(ctx->cache_data); + if (ctx->cache_data_seq != NULL) + buffer_free(ctx->cache_data_seq); buffer_free(ctx->reservations); i_free(ctx); } @@ -421,6 +419,11 @@ buffer_append(ctx->cache_data_seq, &ctx->prev_seq, sizeof(ctx->prev_seq)); ctx->prev_pos = size; + } else if (ctx->cache_data == NULL) { + ctx->cache_data = + buffer_create_dynamic(system_pool, 32768, (size_t)-1); + ctx->cache_data_seq = + buffer_create_dynamic(system_pool, 256, (size_t)-1); } memset(&new_rec, 0, sizeof(new_rec));