Mercurial > dovecot > core-2.2
changeset 18822:165564cc0e0e
indexer: Use array.h API instead of writing our own.
The space savings aren't worth the extra complexity.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 03 Jun 2015 22:25:28 +0300 |
parents | 588e141980e2 |
children | a5d5d2dd6aea |
files | src/indexer/indexer-queue.c src/indexer/indexer-queue.h |
diffstat | 2 files changed, 11 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indexer/indexer-queue.c Wed Jun 03 21:50:40 2015 +0300 +++ b/src/indexer/indexer-queue.c Wed Jun 03 22:25:28 2015 +0300 @@ -1,6 +1,7 @@ /* Copyright (c) 2011-2015 Dovecot authors, see the included COPYING file */ #include "lib.h" +#include "array.h" #include "llist.h" #include "hash.h" #include "indexer-queue.h" @@ -70,22 +71,12 @@ static void request_add_context(struct indexer_request *request, void *context) { - unsigned int count = 0; - if (context == NULL) return; - if (request->contexts == NULL) { - request->contexts = i_new(void *, 2); - } else { - for (; request->contexts[count] != NULL; count++) ; - - request->contexts = - i_realloc(request->contexts, - sizeof(*request->contexts) * (count + 1), - sizeof(*request->contexts) * (count + 2)); - } - request->contexts[count] = context; + if (!array_is_created(&request->contexts)) + i_array_init(&request->contexts, 2); + array_append(&request->contexts, &context, 1); } static struct indexer_request * @@ -173,11 +164,12 @@ struct indexer_request *request, int percentage) { + void *const *contextp; unsigned int i; - if (request->contexts != NULL) { - for (i = 0; request->contexts[i] != NULL; i++) - queue->callback(percentage, request->contexts[i]); + for (i = 0; i < array_count(&request->contexts); i++) { + contextp = array_idx(&request->contexts, i); + queue->callback(percentage, *contextp); } } @@ -199,7 +191,8 @@ *_request = NULL; indexer_queue_request_status_int(queue, request, success ? 100 : -1); - i_free(request->contexts); + if (array_is_created(&request->contexts)) + array_free(&request->contexts); i_free(request->username); i_free(request->mailbox); i_free(request);
--- a/src/indexer/indexer-queue.h Wed Jun 03 21:50:40 2015 +0300 +++ b/src/indexer/indexer-queue.h Wed Jun 03 22:25:28 2015 +0300 @@ -15,7 +15,7 @@ /* optimize this mailbox */ unsigned int optimize:1; - void **contexts; + ARRAY(void *) contexts; }; struct indexer_queue *indexer_queue_init(indexer_status_callback_t *callback);