} T_END;
}
}
- mail_cache_view_close(cache_view);
+ mail_cache_view_close(&cache_view);
mail_index_view_close(&view);
mail_index_close(index);
mail_index_free(&index);
o_stream_seek(output, 0);
o_stream_send(output, &hdr, sizeof(hdr));
- mail_cache_view_close(cache_view);
+ mail_cache_view_close(&cache_view);
if (o_stream_flush(output) < 0) {
errno = output->stream_errno;
return view;
}
-void mail_cache_view_close(struct mail_cache_view *view)
+void mail_cache_view_close(struct mail_cache_view **_view)
{
+ struct mail_cache_view *view = *_view;
+
i_assert(view->trans_view == NULL);
+ *_view = NULL;
if (view->cache->field_header_write_pending &&
!view->cache->compressing)
(void)mail_cache_header_fields_update(view->cache);
struct mail_cache_view *
mail_cache_view_open(struct mail_cache *cache, struct mail_index_view *iview);
-void mail_cache_view_close(struct mail_cache_view *view);
+void mail_cache_view_close(struct mail_cache_view **view);
/* Normally cache decisions are updated on lookup/add. Use this function to
enable/disable this (useful for precaching data). */
break;
}
}
- mail_cache_view_close(cache_view);
+ mail_cache_view_close(&cache_view);
}
int index_storage_get_status(struct mailbox *box,
static void index_transaction_free(struct mailbox_transaction_context *t)
{
- mail_cache_view_close(t->cache_view);
+ mail_cache_view_close(&t->cache_view);
mail_index_view_close(&t->view);
array_free(&t->module_contexts);
i_free(t);