changeset 3291:611ae3edc1fe HEAD

Don't assert-crash with 0-byte sized "mboxes".
author Timo Sirainen <tss@iki.fi>
date Sat, 16 Apr 2005 22:31:21 +0300
parents f82f434a9fdc
children 6448d35f8349
files src/lib-storage/index/mbox/mbox-sync.c
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync.c	Tue Apr 12 14:29:48 2005 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync.c	Sat Apr 16 22:31:21 2005 +0300
@@ -1221,8 +1221,19 @@
 		return -1;
 	}
 
-	i_assert(sync_ctx->base_uid_validity != 0);
-	if (sync_ctx->base_uid_validity != sync_ctx->hdr->uid_validity) {
+	/* only reason not to have UID validity at this point is if the file
+	   is entirely empty. In that case just make up a new one if needed. */
+	i_assert(sync_ctx->base_uid_validity != 0 || st->st_size == 0);
+
+	if (sync_ctx->base_uid_validity != sync_ctx->hdr->uid_validity ||
+	    sync_ctx->base_uid_validity == 0) {
+		if (sync_ctx->base_uid_validity == 0) {
+                        sync_ctx->base_uid_validity =
+				sync_ctx->hdr->uid_validity != 0 ?
+				sync_ctx->hdr->uid_validity :
+				(unsigned int)ioloop_time;
+		}
+
 		mail_index_update_header(sync_ctx->t,
 			offsetof(struct mail_index_header, uid_validity),
 			&sync_ctx->base_uid_validity,