changeset 5001:c0a9bab3fc32 HEAD

CR removing from parsed mails didn't work properly for multipart mails.
author Timo Sirainen <tss@iki.fi>
date Sun, 14 Jan 2007 04:48:15 +0200
parents d410ee18ae93
children 82747a8b0b8b
files src/lib-mail/message-parser.c
diffstat 1 files changed, 6 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c	Sun Jan 14 03:49:08 2007 +0200
+++ b/src/lib-mail/message-parser.c	Sun Jan 14 04:48:15 2007 +0200
@@ -652,8 +652,7 @@
 			      off_t diff)
 {
 	while (parts != NULL) {
-		uoff_t old_size = parts->header_size.physical_size +
-			parts->body_size.physical_size;
+		parts->physical_pos += diff;
 
 		if (use_crlf) {
 			parts->header_size.physical_size =
@@ -667,18 +666,18 @@
 			parts->body_size.physical_size =
 				parts->body_size.virtual_size -
 				parts->body_size.lines;
+
+			diff -= parts->header_size.lines;
 		}
-		parts->physical_pos += diff;
-
-		diff += (off_t)(parts->header_size.physical_size +
-				parts->body_size.physical_size) -
-			(off_t)old_size;
 
 		if (parts->children != NULL) {
 			message_parser_set_crlfs_diff(parts->children,
 						      use_crlf, diff);
 		}
 
+		if (!use_crlf)
+			diff -= parts->body_size.lines;
+
 		parts = parts->next;
 	}
 }