From: Carl Worth Date: Wed, 26 Jan 2011 05:53:14 +0000 (+1000) Subject: lib: Save and restore term position in message while indexing. X-Git-Tag: debian/0.6_254~204 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=db70f3f0c4132b6113a68604dc8439360dc9b9b8;p=notmuch.git lib: Save and restore term position in message while indexing. This fixes the recently addead search-position-overlap bug as demonstrated in the test of the same name. --- diff --git a/lib/message.cc b/lib/message.cc index 0d9542e6..0590f764 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -39,6 +39,7 @@ struct _notmuch_message { unsigned long flags; Xapian::Document doc; + Xapian::termcount termpos; }; #define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0])) @@ -123,6 +124,7 @@ _notmuch_message_create_for_document (const void *talloc_owner, talloc_set_destructor (message, _notmuch_message_destructor); message->doc = doc; + message->termpos = 0; return message; } @@ -824,11 +826,13 @@ _notmuch_message_gen_terms (notmuch_message_t *message, return NOTMUCH_PRIVATE_STATUS_NULL_POINTER; term_gen->set_document (message->doc); + term_gen->set_termpos (message->termpos); if (prefix_name) { const char *prefix = _find_prefix (prefix_name); term_gen->index_text (text, 1, prefix); + message->termpos = term_gen->get_termpos (); } term_gen->index_text (text);