[PATCH] WIP: test patch for reference loop problem
David Bremner
david at tethera.net
Mon Apr 2 04:03:55 PDT 2018
---
lib/thread.cc | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/lib/thread.cc b/lib/thread.cc
index 3561b27f..356d63ce 100644
--- a/lib/thread.cc
+++ b/lib/thread.cc
@@ -391,10 +391,15 @@ static void
_resolve_thread_relationships (notmuch_thread_t *thread)
{
notmuch_message_node_t *node;
- notmuch_message_t *message, *parent;
+ notmuch_message_t *message, *first_message = NULL, *parent;
const char *in_reply_to;
- for (node = thread->message_list->head; node; node = node->next) {
+ node = thread->message_list->head;
+ if (node) {
+ first_message = node->message;
+ node = node->next;
+ }
+ for (; node; node = node->next) {
message = node->message;
in_reply_to = _notmuch_message_get_in_reply_to (message);
if (in_reply_to && strlen (in_reply_to) &&
@@ -406,6 +411,19 @@ _resolve_thread_relationships (notmuch_thread_t *thread)
_notmuch_message_list_add_message (thread->toplevel_list, message);
}
+ /* XXX: this is probably nonsense: if we didn't find any top level
+ * messages, choose one at random */
+ if (first_message) {
+ in_reply_to = _notmuch_message_get_in_reply_to (first_message);
+ if (thread->toplevel_list->head && in_reply_to && strlen (in_reply_to) &&
+ g_hash_table_lookup_extended (thread->message_hash,
+ in_reply_to, NULL,
+ (void **) &parent))
+ _notmuch_message_add_reply (parent, first_message);
+ else
+ _notmuch_message_list_add_message (thread->toplevel_list, first_message);
+ }
+
/* XXX: After scanning through the entire list looking for parents
* via "In-Reply-To", we should do a second pass that looks at the
* list of messages IDs in the "References" header instead. (And
--
2.16.2
More information about the notmuch
mailing list