From 2dbeca5fdbb3ca033b1779bada53d1ec3b88ebd3 Mon Sep 17 00:00:00 2001 From: "bienvenu%nventure.com" Date: Tue, 20 Sep 2005 13:05:16 +0000 Subject: [PATCH] don't make thread enumerator hold a ref to db object, breaks cycle that holds db's open, r/sr=neil, 266679 git-svn-id: svn://10.0.0.236/trunk@180645 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp index 6f5de14a116..b3a5247b5a7 100644 --- a/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsMsgDatabase.cpp @@ -934,6 +934,7 @@ nsMsgDatabase::~nsMsgDatabase() if (m_dbFolderInfo) m_dbFolderInfo->ReleaseExternalReferences(); + NotifyAnnouncerGoingAway(); NS_IF_RELEASE(m_dbFolderInfo); if (m_HeaderParser) { @@ -954,7 +955,6 @@ nsMsgDatabase::~nsMsgDatabase() m_mdbEnv->Release(); //??? is this right? m_mdbEnv = nsnull; } - NotifyAnnouncerGoingAway(); if (m_ChangeListeners) { //better not be any listeners, because we're going away. @@ -2773,7 +2773,7 @@ public: protected: nsresult GetTableCursor(void); nsresult PrefetchNext(); - nsMsgDatabase* mDB; + nsMsgDatabase* mDB; nsIMdbPortTableCursor* mTableCursor; nsIMsgThread* mResultThread; PRBool mDone; @@ -2786,7 +2786,6 @@ nsMsgDBThreadEnumerator::nsMsgDBThreadEnumerator(nsMsgDatabase* db, : mDB(db), mTableCursor(nsnull), mResultThread(nsnull), mDone(PR_FALSE), mFilter(filter) { - NS_ADDREF(mDB); mDB->AddListener(this); mNextPrefetched = PR_FALSE; } @@ -2795,7 +2794,8 @@ nsMsgDBThreadEnumerator::~nsMsgDBThreadEnumerator() { mTableCursor->Release(); NS_IF_RELEASE(mResultThread); - NS_IF_RELEASE(mDB); + if (mDB) + mDB->RemoveListener(this); } NS_IMPL_ISUPPORTS2(nsMsgDBThreadEnumerator, nsISimpleEnumerator, nsIDBChangeListener)