changeset 2905:1e0d71e67315 HEAD

sync_ext_reorder() sometimes added too much data to buffer.
author Timo Sirainen <tss@iki.fi>
date Mon, 29 Nov 2004 01:26:19 +0200
parents 642ba9cd3dac
children b909bce742bf
files src/lib-index/mail-index-sync-update.c
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync-update.c	Mon Nov 29 01:19:53 2004 +0200
+++ b/src/lib-index/mail-index-sync-update.c	Mon Nov 29 01:26:19 2004 +0200
@@ -500,14 +500,15 @@
 		offset += new_map->hdr.record_size;
 	}
 
-	if (ext_id == size-1 && ext[ext_id].record_size != old_size &&
-	    old_records_count != 0) {
+	if (new_map->buffer->used !=
+	    old_records_count * new_map->hdr.record_size) {
 		/* we didn't fully write the last record */
+		i_assert(new_map->buffer->used ==
+			 old_records_count * new_map->hdr.record_size -
+			 (ext[ext_id].record_size - old_size));
 		buffer_append_zero(new_map->buffer,
 				   ext[ext_id].record_size - old_size);
 	}
-	i_assert(new_map->buffer->used ==
-		 old_records_count * new_map->hdr.record_size);
 
 	new_map->records = buffer_get_modifyable_data(new_map->buffer, NULL);
 	new_map->records_count = old_records_count;