Mercurial > dovecot > core-2.2
changeset 13113:2e15e70f5f2d
lib-storage: Sorting by relevancy returned messages in reverse order.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 26 Jul 2011 15:04:57 +0300 |
parents | 10dcd83cd77d |
children | 04716e20f44f |
files | src/lib-storage/index/index-sort.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-sort.c Tue Jul 26 14:11:23 2011 +0300 +++ b/src/lib-storage/index/index-sort.c Tue Jul 26 15:04:57 2011 +0300 @@ -209,7 +209,12 @@ { ARRAY_TYPE(mail_sort_node_float) *nodes = program->context; + /* NOTE: higher relevancy is returned first, unlike with all + other number based sort keys, so temporarily reverse the search */ + static_node_cmp_context.reverse = !static_node_cmp_context.reverse; array_sort(nodes, sort_node_float_cmp); + static_node_cmp_context.reverse = !static_node_cmp_context.reverse; + memcpy(&program->seqs, nodes, sizeof(program->seqs)); i_free(nodes); program->context = NULL; @@ -519,8 +524,10 @@ mail_set_seq(mail, seq2); float2 = index_sort_get_relevancy(mail); - ret = float1 < float2 ? -1 : - (float1 > float2 ? 1 : 0); + /* NOTE: higher relevancy is returned first, unlike with all + other number based sort keys */ + ret = float1 < float2 ? 1 : + (float1 > float2 ? -1 : 0); break; case MAIL_SORT_POP3_ORDER: /* 32bit numbers would be enough, but since there is already