зеркало из https://github.com/mozilla/gecko-dev.git
fix memory leaks opening and closing dbs r=mscott
This commit is contained in:
Родитель
9dfca9b674
Коммит
22e548da9d
|
@ -51,6 +51,7 @@ nsAbAddressCollecter::~nsAbAddressCollecter()
|
|||
{
|
||||
m_historyAB->Commit(kSessionCommit);
|
||||
m_historyAB->Close(PR_FALSE);
|
||||
m_historyAB = null_nsCOMPtr();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,8 +45,6 @@ nsAbCard::~nsAbCard(void)
|
|||
{
|
||||
nsIAddrDBListener* listener = this;
|
||||
mCardDatabase->RemoveListener(listener);
|
||||
|
||||
mCardDatabase->Close(PR_TRUE);
|
||||
mCardDatabase = null_nsCOMPtr();
|
||||
}
|
||||
|
||||
|
|
|
@ -163,11 +163,8 @@ nsAbCardProperty::~nsAbCardProperty(void)
|
|||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
|
||||
if (mCardDatabase)
|
||||
{
|
||||
mCardDatabase->Close(PR_TRUE);
|
||||
mCardDatabase = null_nsCOMPtr();
|
||||
}
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче