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
This commit is contained in:
parent
90208b4cf2
commit
2dbeca5fdb
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user