diff --git a/mailnews/addrbook/src/nsAbAddressCollecter.cpp b/mailnews/addrbook/src/nsAbAddressCollecter.cpp index 1142d6b0016f..e674976cb8d8 100644 --- a/mailnews/addrbook/src/nsAbAddressCollecter.cpp +++ b/mailnews/addrbook/src/nsAbAddressCollecter.cpp @@ -51,6 +51,7 @@ nsAbAddressCollecter::~nsAbAddressCollecter() { m_historyAB->Commit(kSessionCommit); m_historyAB->Close(PR_FALSE); + m_historyAB = null_nsCOMPtr(); } } diff --git a/mailnews/addrbook/src/nsAbCard.cpp b/mailnews/addrbook/src/nsAbCard.cpp index 87d7bdd7432b..bb18381609dd 100644 --- a/mailnews/addrbook/src/nsAbCard.cpp +++ b/mailnews/addrbook/src/nsAbCard.cpp @@ -45,8 +45,6 @@ nsAbCard::~nsAbCard(void) { nsIAddrDBListener* listener = this; mCardDatabase->RemoveListener(listener); - - mCardDatabase->Close(PR_TRUE); mCardDatabase = null_nsCOMPtr(); } diff --git a/mailnews/addrbook/src/nsAbCardProperty.cpp b/mailnews/addrbook/src/nsAbCardProperty.cpp index 61b0f08ac304..2eb118ab6575 100644 --- a/mailnews/addrbook/src/nsAbCardProperty.cpp +++ b/mailnews/addrbook/src/nsAbCardProperty.cpp @@ -163,10 +163,7 @@ nsAbCardProperty::~nsAbCardProperty(void) RemoveAnonymousList(m_pAnonymousBoolValues); if (mCardDatabase) - { - mCardDatabase->Close(PR_TRUE); mCardDatabase = null_nsCOMPtr(); - } } nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray) diff --git a/mailnews/addrbook/src/nsAddrDatabase.cpp b/mailnews/addrbook/src/nsAddrDatabase.cpp index 518e67e367a6..313c8be23ec0 100644 --- a/mailnews/addrbook/src/nsAddrDatabase.cpp +++ b/mailnews/addrbook/src/nsAddrDatabase.cpp @@ -172,7 +172,7 @@ nsAddrDatabase::~nsAddrDatabase() delete m_ChangeListeners; } - CleanupCache(); + RemoveFromCache(this); if (m_pAnonymousStrAttributes) RemoveAnonymousList(m_pAnonymousStrAttributes); @@ -558,7 +558,7 @@ NS_IMETHODIMP nsAddrDatabase::Open return NS_ERROR_OUT_OF_MEMORY; } - pAddressBookDB->AddRef(); + NS_ADDREF(pAddressBookDB); err = pAddressBookDB->OpenMDB(pabName, create); if (NS_SUCCEEDED(err)) @@ -567,7 +567,6 @@ NS_IMETHODIMP nsAddrDatabase::Open *pAddrDB = pAddressBookDB; if (pAddressBookDB) GetDBCache()->AppendElement(pAddressBookDB); - NS_IF_ADDREF(*pAddrDB); } else { @@ -721,6 +720,11 @@ NS_IMETHODIMP nsAddrDatabase::CloseMDB(PRBool commit) { if (commit) Commit(kSessionCommit); + if (m_mdbStore) + { + m_mdbStore->CloseMdbObject(m_mdbEnv); + m_mdbStore = nsnull; + } return NS_OK; } @@ -765,11 +769,6 @@ NS_IMETHODIMP nsAddrDatabase::ForceClosed() RemoveFromCache(this); err = CloseMDB(PR_FALSE); // since we're about to delete it, no need to commit. - if (m_mdbStore) - { - m_mdbStore->CloseMdbObject(m_mdbEnv); - m_mdbStore = nsnull; - } Release(); return err; }