[dovecot-cvs] dovecot/src/lib-index mail-index-sync-update.c, 1.55, 1.56

cras at dovecot.org cras at dovecot.org
Mon Nov 8 04:31:42 EET 2004


Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv21316/lib-index

Modified Files:
	mail-index-sync-update.c 
Log Message:
crashfix



Index: mail-index-sync-update.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -d -r1.55 -r1.56
--- mail-index-sync-update.c	8 Nov 2004 01:21:14 -0000	1.55
+++ mail-index-sync-update.c	8 Nov 2004 02:31:40 -0000	1.56
@@ -477,6 +477,11 @@
 	new_map = mail_index_map_to_memory(map, offset);
 	map->records_count = old_records_count;
 
+	if (old_size > ext[ext_id].record_size) {
+		/* we are shrinking the record */
+		old_size = ext[ext_id].record_size;
+	}
+
 	/* now copy the records to new mapping */
 	src = map->records;
 	offset = 0;
@@ -494,6 +499,12 @@
 		offset += new_map->hdr->record_size;
 	}
 
+	if (ext_id == size-1 && ext[ext_id].record_size != old_size) {
+		/* we didn't fully write the last record */
+		buffer_append_zero(new_map->buffer,
+				   ext[ext_id].record_size - old_size);
+	}
+
 	new_map->records = buffer_get_modifyable_data(new_map->buffer, NULL);
 	new_map->records_count = old_records_count;
 



More information about the dovecot-cvs mailing list