Mercurial > dovecot > original-hg > dovecot-1.2
changeset 4933:44a0e7606f7a HEAD
Use seq_range_array_remove_range() instead of slowly iterating ourself.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 20 Dec 2006 16:45:39 +0200 |
parents | f38f3f11a93f |
children | 5ffaf2d47671 |
files | src/plugins/fts-squat/squat-uidlist.c |
diffstat | 1 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts-squat/squat-uidlist.c Wed Dec 20 16:44:40 2006 +0200 +++ b/src/plugins/fts-squat/squat-uidlist.c Wed Dec 20 16:45:39 2006 +0200 @@ -45,7 +45,7 @@ ARRAY_TYPE(seq_range) *result; - uint32_t filter_pos; + uint32_t filter_uid_pos; }; struct squat_uidlist { @@ -976,14 +976,16 @@ static void squat_uidlist_get_add_uid(struct squat_uidlist_get_context *ctx, uint32_t uid) { - if (ctx->filter_pos == 0) { + if (ctx->filter_uid_pos == 0) { seq_range_array_add(ctx->result, 0, uid); return; } - for (; ctx->filter_pos < uid; ctx->filter_pos++) - seq_range_array_remove(ctx->result, ctx->filter_pos); - ctx->filter_pos++; + if (ctx->filter_uid_pos < uid) { + seq_range_array_remove_range(ctx->result, + ctx->filter_uid_pos, uid-1); + } + ctx->filter_uid_pos = uid+1; } static int @@ -1053,15 +1055,15 @@ memset(&ctx, 0, sizeof(ctx)); ctx.uidlist = uidlist; ctx.result = result; - ctx.filter_pos = 1; + ctx.filter_uid_pos = 1; if (squat_uidlist_get_ctx(&ctx, uid_list_idx) < 0) return -1; range = array_get(ctx.result, &count); if (count > 0) { - for (; ctx.filter_pos <= range[count-1].seq2; ctx.filter_pos++) - seq_range_array_remove(result, ctx.filter_pos); + seq_range_array_remove_range(result, ctx.filter_uid_pos, + range[count-1].seq2); } return 0; }