diff --git a/src/lib-index/mail-index.c b/src/lib-index/mail-index.c index 12997ba4ba..fb404007dc 100644 --- a/src/lib-index/mail-index.c +++ b/src/lib-index/mail-index.c @@ -17,6 +17,7 @@ #include "mail-index-sync-private.h" #include "mail-index-modseq.h" #include "mail-transaction-log.h" +#include "mail-transaction-log-view-private.h" #include "mail-cache.h" #include @@ -600,8 +601,16 @@ int mail_index_open(struct mail_index *index, enum mail_index_open_flags flags) mail_index_close_nonopened(index); return ret; } + index->open_count++; + if (index->log->head == NULL) { + mail_index_close(index); + mail_index_set_error(index, "Index is corrupted " + "(log->view->head == NULL)"); + return -1; + } + i_assert(index->map != NULL); mail_index_alloc_cache_index_opened(index); return 1; diff --git a/src/lib-index/mail-transaction-log-view.c b/src/lib-index/mail-transaction-log-view.c index e551d17172..c7ecea7b6f 100644 --- a/src/lib-index/mail-transaction-log-view.c +++ b/src/lib-index/mail-transaction-log-view.c @@ -15,6 +15,8 @@ mail_transaction_log_view_open(struct mail_transaction_log *log) view->log = log; view->broken = TRUE; + i_assert(view->log->head != NULL); + view->head = view->tail = view->log->head; view->head->refcount++; i_array_init(&view->file_refs, 8);