[dovecot-cvs] dovecot/src/lib-index mail-cache-lookup.c,1.16,1.17

cras at dovecot.org cras at dovecot.org
Sun Aug 15 05:50:31 EEST 2004


Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv19192

Modified Files:
	mail-cache-lookup.c 
Log Message:
bugfix



Index: mail-cache-lookup.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-cache-lookup.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- mail-cache-lookup.c	20 Jul 2004 17:06:08 -0000	1.16
+++ mail-cache-lookup.c	15 Aug 2004 02:50:29 -0000	1.17
@@ -339,6 +339,8 @@
 	const unsigned char *p, *start, *end;
 	size_t i, size, hdr_size;
 	unsigned int field_idx;
+	uint8_t one = 1;
+	buffer_t *buf;
 	int ret;
 
 	if (fields_count == 0)
@@ -351,8 +353,8 @@
 	ctx.fields = t_new(unsigned int, fields_count);
 	ctx.fields_count = fields_count;
 
-	ctx.max_field = 1;
-	ctx.fields_found = t_buffer_get(ctx.max_field);
+	ctx.max_field = 0;
+	buf = buffer_create_dynamic(pool_datastack_create(), 32, (size_t)-1);
 	for (i = 0; i < fields_count; i++) {
 		i_assert(fields[i] < cache->fields_count);
 		field_idx = cache->field_file_map[fields[i]];
@@ -362,17 +364,13 @@
 			return 0;
 		}
 
-		if (field_idx > ctx.max_field) {
-			ctx.fields_found = t_buffer_reget(ctx.fields_found,
-							  field_idx + 1);
-			memset(ctx.fields_found + ctx.max_field + 1, 0,
-			       field_idx - ctx.max_field - 1);
+		if (field_idx > ctx.max_field)
 			ctx.max_field = field_idx;
-		}
-		ctx.fields_found[field_idx] = 1;
+
+		buffer_write(buf, field_idx, &one, 1);
                 ctx.fields[i] = field_idx;
 	}
-        t_buffer_alloc(ctx.max_field + 1);
+	ctx.fields_found = buffer_get_modifyable_data(buf, NULL);
 
 	ctx.data = buffer_create_dynamic(pool_datastack_create(),
 					 256, (size_t)-1);



More information about the dovecot-cvs mailing list