Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2011:9c2c31893775 HEAD
don't crash with assert if transacton log has expunge with seq 0
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 11 May 2004 00:26:31 +0300 |
parents | 01d2eb10a1c9 |
children | 863fbe16e395 |
files | src/lib-index/mail-index-sync.c |
diffstat | 1 files changed, 3 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync.c Tue May 11 00:25:42 2004 +0300 +++ b/src/lib-index/mail-index-sync.c Tue May 11 00:26:31 2004 +0300 @@ -307,15 +307,9 @@ it's quite unlikely this expunge was caused by some bug. */ uint32_t uid1, uid2; - if (next_exp->seq1 > ctx->view->map->records_count || - next_exp->seq2 > ctx->view->map->records_count) { - mail_transaction_log_view_set_corrupted( - ctx->view->log_view, "Expunge range %u..%u " - "larger than message count %u", - next_exp->seq1, next_exp->seq2, - ctx->view->map->records_count); + mail_index_sync_get_expunge(sync_rec, next_exp); + if (mail_index_sync_rec_check(ctx->view, sync_rec) < 0) return -1; - } if (mail_index_lookup_uid(ctx->view, next_exp->seq1, &uid1) < 0) return -1; @@ -330,13 +324,12 @@ return -1; } - mail_index_sync_get_expunge(sync_rec, next_exp); ctx->expunge_idx++; /* scan updates again from the beginning */ ctx->update_idx = 0; ctx->next_seq = next_exp->seq2; - return mail_index_sync_rec_check(ctx->view, sync_rec); + return 1; } if (ctx->sync_appends) {