From cb66ad3fe4a2297ea211adfe012dbdf3f875090b Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 15 Feb 2001 19:16:19 +0000 Subject: Deal with out-of-order References headers so they don't cause messages to * camel-folder-thread.c (container_parent_child): Deal with out-of-order References headers so they don't cause messages to disappear in threaded view. svn path=/trunk/; revision=8245 --- camel/camel-folder-thread.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'camel/camel-folder-thread.c') diff --git a/camel/camel-folder-thread.c b/camel/camel-folder-thread.c index af8872c619..3a1c4addde 100644 --- a/camel/camel-folder-thread.c +++ b/camel/camel-folder-thread.c @@ -62,6 +62,14 @@ container_parent_child(CamelFolderThreadNode *parent, CamelFolderThreadNode *chi if (child->parent == parent) return; + /* would this create a loop? */ + node = parent->parent; + while (node) { + if (node == child) + return; + node = node->parent; + } + /* are we unparented? */ if (child->parent == NULL) { container_add_child(parent, child); @@ -99,7 +107,7 @@ prune_empty(CamelFolderThread *thread, CamelFolderThreadNode **cp) d(printf("checking message %p %p (%08x%08x)\n", c, c->message, c->message?c->message->message_id.id.part.hi:0, - c->message->message_uid.id.part.lo:0)); + c->message?c->message->message_id.id.part.lo:0)); if (c->message == NULL) { if (c->child == NULL) { d(printf("removing empty node\n")); @@ -478,7 +486,7 @@ camel_folder_thread_messages_new(CamelFolder *folder, GPtrArray *uids) c = e_memchunk_alloc0(thread->node_chunks); g_hash_table_insert(no_id_table, (void *)mi, c); } else { - d(printf("doing : %.8s\n", mi->message_id.id.hash)); + d(printf("doing : %08x%08x (%s)\n", mi->message_id.id.part.hi, mi->message_id.id.part.lo, camel_message_info_subject(mi))); c = e_memchunk_alloc0(thread->node_chunks); g_hash_table_insert(id_table, (void *)&mi->message_id, c); } -- cgit v1.2.3