From afc9220432cc86653ca84379ebadddd02806c4b3 Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Tue, 19 Sep 2006 22:56:02 +0000 Subject: [PATCH] fix threading of messages that claim to be their own children/parents, 332883, sr=mscott git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@212030 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp index 400b974243d..953021e8ba4 100644 --- a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp @@ -3719,7 +3719,7 @@ nsresult nsMsgDatabase::ThreadNewHdr(nsMsgHdr* newHdr, PRBool &newThread) nsresult result=NS_ERROR_UNEXPECTED; nsCOMPtr thread; nsCOMPtr replyToHdr; - nsMsgKey threadId = nsMsgKey_None; + nsMsgKey threadId = nsMsgKey_None, newHdrKey; if (!newHdr) return NS_ERROR_NULL_POINTER; @@ -3733,6 +3733,7 @@ nsresult nsMsgDatabase::ThreadNewHdr(nsMsgHdr* newHdr, PRBool &newThread) // in m_newSet yet. newHdr->GetRawFlags(&newHdrFlags); newHdr->GetNumReferences(&numReferences); + newHdr->GetMessageKey(&newHdrKey); // try reference threading first for (PRInt32 i = numReferences - 1; i >= 0; i--) @@ -3750,6 +3751,14 @@ nsresult nsMsgDatabase::ThreadNewHdr(nsMsgHdr* newHdr, PRBool &newThread) thread = getter_AddRefs(GetThreadForReference(reference, getter_AddRefs(replyToHdr))) ; if (thread) { + if (replyToHdr) + { + nsMsgKey replyToKey; + replyToHdr->GetMessageKey(&replyToKey); + // message claims to be a reply to itself - ignore that since it leads to corrupt threading. + if (replyToKey == newHdrKey) + continue; + } thread->GetThreadKey(&threadId); newHdr->SetThreadId(threadId); result = AddToThread(newHdr, thread, replyToHdr, PR_TRUE);