diff --git a/mozilla/mailnews/db/msgdb/public/nsMsgDatabase.h b/mozilla/mailnews/db/msgdb/public/nsMsgDatabase.h index 2a78018c6c2..2d771aa1e56 100644 --- a/mozilla/mailnews/db/msgdb/public/nsMsgDatabase.h +++ b/mozilla/mailnews/db/msgdb/public/nsMsgDatabase.h @@ -206,6 +206,8 @@ public: static int GetNumInCache(void) {return(GetDBCache()->Count());} static void DumpCache(); virtual nsresult DumpContents(); + nsresult DumpThread(nsMsgKey threadId); + nsresult DumpMsgChildren(nsIMessage *msgHdr); #endif friend class nsMsgHdr; // use this to get access to cached tokens for hdr fields diff --git a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp index 53c2f02cd01..8fa8b66e493 100644 --- a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp @@ -2574,9 +2574,56 @@ nsresult nsMsgDatabase::DumpContents() { key = threads[i]; printf("thread key = %ld\n", key); +// DumpThread(key); } return NS_OK; } + +nsresult nsMsgDatabase::DumpMsgChildren(nsIMessage *msgHdr) +{ + return NS_OK; +} + +nsresult nsMsgDatabase::DumpThread(nsMsgKey threadId) +{ + nsresult ret = NS_OK; + nsIMsgThread *thread = nsnull; + + thread = GetThreadForThreadId(threadId); + if (thread) + { + nsIEnumerator *enumerator = nsnull; + + ret = thread->EnumerateMessages(nsMsgKey_None, &enumerator); + if (NS_SUCCEEDED(ret) && enumerator) + { + for (enumerator->First(); enumerator->IsDone() != NS_OK; enumerator->Next()) + { + nsIMessage *pMessage = nsnull; + ret = enumerator->CurrentItem((nsISupports**)&pMessage); + NS_ASSERTION(NS_SUCCEEDED(ret), "nsMsgDBEnumerator broken"); + if (NS_FAILED(ret)) + break; + + if (pMessage) + { + nsMsgKey key; + nsString subject; + (void)pMessage->GetMessageKey(&key); + pMessage->GetSubject(subject); + + printf("message in thread %ld %s\n", key, (const char *) &nsAutoString(subject)); + } + // NS_RELEASE(pMessage); + pMessage = nsnull; + } + NS_RELEASE(enumerator); + + } + } + return ret; +} + #endif diff --git a/mozilla/mailnews/db/msgdb/src/nsMsgThread.cpp b/mozilla/mailnews/db/msgdb/src/nsMsgThread.cpp index 96b18ce8b12..a386bad46eb 100644 --- a/mozilla/mailnews/db/msgdb/src/nsMsgThread.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsMsgThread.cpp @@ -191,14 +191,18 @@ NS_IMETHODIMP nsMsgThread::GetChildHdrAt(PRInt32 index, nsIMessage **result) { nsresult ret = NS_OK; nsIMdbRow* resultRow; - mdb_pos pos = index; + mdb_pos pos = index - 1; + if (!result) + return NS_ERROR_NULL_POINTER; + + *result = nsnull; nsIMdbTableRowCursor *rowCursor; ret = m_mdbTable->GetTableRowCursor(m_mdbDB->GetEnv(), pos, &rowCursor); ret = rowCursor->NextRow(m_mdbDB->GetEnv(), &resultRow, &pos); NS_RELEASE(rowCursor); - if (NS_FAILED(ret)) + if (NS_FAILED(ret) || !resultRow) return ret; //Get key from row