[dovecot-cvs] dovecot/src/lib-storage/index index-mail-headers.c, 1.47, 1.48 index-search.c, 1.101, 1.102

cras at dovecot.org cras at dovecot.org
Sun Apr 17 18:43:47 EEST 2005


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

Modified Files:
	index-mail-headers.c index-search.c 
Log Message:
Don't even try to allow searching zero number of headers.



Index: index-mail-headers.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/index-mail-headers.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- index-mail-headers.c	16 Apr 2005 22:22:23 -0000	1.47
+++ index-mail-headers.c	17 Apr 2005 15:43:45 -0000	1.48
@@ -499,6 +499,8 @@
 	int ret;
 	array_t ARRAY_DEFINE(header_values, const char *);
 
+	i_assert(field != NULL);
+
 	field_idx = get_header_field_idx(mail->ibox, field);
 
 	dest = str_new(mail->data_pool, 128);
@@ -631,20 +633,18 @@
 	pool_t pool;
 	unsigned int i, count;
 
+	i_assert(*headers != NULL);
+
 	for (count = 0, name = headers; *name != NULL; name++)
 		count++;
 
 	t_push();
 
-	if (count > 0) {
-		/* @UNSAFE: headers need to be sorted for filter stream. */
-		sorted_headers = t_new(const char *, count);
-		memcpy(sorted_headers, headers,
-		       count * sizeof(*sorted_headers));
-		qsort(sorted_headers, count, sizeof(*sorted_headers),
-		      strcasecmp_p);
-		headers = sorted_headers;
-	}
+	/* @UNSAFE: headers need to be sorted for filter stream. */
+	sorted_headers = t_new(const char *, count);
+	memcpy(sorted_headers, headers, count * sizeof(*sorted_headers));
+	qsort(sorted_headers, count, sizeof(*sorted_headers), strcasecmp_p);
+	headers = sorted_headers;
 
 	/* @UNSAFE */
 	fields = t_new(struct mail_cache_field, count);
@@ -660,15 +660,13 @@
 	ctx->pool = pool;
 	ctx->count = count;
 
-	if (count > 0) {
-		ctx->idx = p_new(pool, unsigned int, count);
-		ctx->name = p_new(pool, const char *, count);
+	ctx->idx = p_new(pool, unsigned int, count);
+	ctx->name = p_new(pool, const char *, count);
 
-		/* @UNSAFE */
-		for (i = 0; i < count; i++) {
-			ctx->idx[i] = fields[i].idx;
-			ctx->name[i] = p_strdup(pool, headers[i]);
-		}
+	/* @UNSAFE */
+	for (i = 0; i < count; i++) {
+		ctx->idx[i] = fields[i].idx;
+		ctx->name[i] = p_strdup(pool, headers[i]);
 	}
 
 	t_pop();

Index: index-search.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/index-search.c,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -d -r1.101 -r1.102
--- index-search.c	29 Mar 2005 16:48:46 -0000	1.101
+++ index-search.c	17 Apr 2005 15:43:45 -0000	1.102
@@ -483,6 +483,7 @@
 				return FALSE;
 		} else {
 			/* FIXME: do this once in init */
+			i_assert(*headers != NULL);
 			headers_ctx =
 				mailbox_header_lookup_init(&ctx->ibox->box,
 							   headers);



More information about the dovecot-cvs mailing list