changeset 3999:f1e29736e60d HEAD

Don't register cache fields twice. Fixes "duplicate field in header" errors.
author Timo Sirainen <tss@iki.fi>
date Wed, 08 Feb 2006 19:52:45 +0200
parents 9d1bb677c5ca
children 421d844e884d
files src/lib-index/mail-cache-fields.c
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-cache-fields.c	Wed Feb 08 19:29:05 2006 +0200
+++ b/src/lib-index/mail-cache-fields.c	Wed Feb 08 19:52:45 2006 +0200
@@ -17,7 +17,7 @@
 {
 	void *orig_key, *orig_value;
 	unsigned int new_idx;
-	size_t i;
+	unsigned int i, j;
 
 	new_idx = cache->fields_count;
 	for (i = 0; i < fields_count; i++) {
@@ -28,7 +28,17 @@
 			continue;
 		}
 
-		fields[i].idx = new_idx++;
+		/* check if the same header is being registered in the
+		   same field array */
+		for (j = 0; j < i; j++) {
+			if (strcasecmp(fields[i].name, fields[j].name) == 0) {
+				fields[i].idx = fields[j].idx;
+				break;
+			}
+		}
+
+		if (j == i)
+			fields[i].idx = new_idx++;
 	}
 
 	if (new_idx == cache->fields_count)