зеркало из 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->Commit(kSessionCommit);
|
||||||
m_historyAB->Close(PR_FALSE);
|
m_historyAB->Close(PR_FALSE);
|
||||||
|
m_historyAB = null_nsCOMPtr();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,6 @@ nsAbCard::~nsAbCard(void)
|
||||||
{
|
{
|
||||||
nsIAddrDBListener* listener = this;
|
nsIAddrDBListener* listener = this;
|
||||||
mCardDatabase->RemoveListener(listener);
|
mCardDatabase->RemoveListener(listener);
|
||||||
|
|
||||||
mCardDatabase->Close(PR_TRUE);
|
|
||||||
mCardDatabase = null_nsCOMPtr();
|
mCardDatabase = null_nsCOMPtr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,11 +163,8 @@ nsAbCardProperty::~nsAbCardProperty(void)
|
||||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||||
|
|
||||||
if (mCardDatabase)
|
if (mCardDatabase)
|
||||||
{
|
|
||||||
mCardDatabase->Close(PR_TRUE);
|
|
||||||
mCardDatabase = null_nsCOMPtr();
|
mCardDatabase = null_nsCOMPtr();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray)
|
nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray)
|
||||||
{
|
{
|
||||||
|
|
|
@ -172,7 +172,7 @@ nsAddrDatabase::~nsAddrDatabase()
|
||||||
delete m_ChangeListeners;
|
delete m_ChangeListeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanupCache();
|
RemoveFromCache(this);
|
||||||
|
|
||||||
if (m_pAnonymousStrAttributes)
|
if (m_pAnonymousStrAttributes)
|
||||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||||
|
@ -558,7 +558,7 @@ NS_IMETHODIMP nsAddrDatabase::Open
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
pAddressBookDB->AddRef();
|
NS_ADDREF(pAddressBookDB);
|
||||||
|
|
||||||
err = pAddressBookDB->OpenMDB(pabName, create);
|
err = pAddressBookDB->OpenMDB(pabName, create);
|
||||||
if (NS_SUCCEEDED(err))
|
if (NS_SUCCEEDED(err))
|
||||||
|
@ -567,7 +567,6 @@ NS_IMETHODIMP nsAddrDatabase::Open
|
||||||
*pAddrDB = pAddressBookDB;
|
*pAddrDB = pAddressBookDB;
|
||||||
if (pAddressBookDB)
|
if (pAddressBookDB)
|
||||||
GetDBCache()->AppendElement(pAddressBookDB);
|
GetDBCache()->AppendElement(pAddressBookDB);
|
||||||
NS_IF_ADDREF(*pAddrDB);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -721,6 +720,11 @@ NS_IMETHODIMP nsAddrDatabase::CloseMDB(PRBool commit)
|
||||||
{
|
{
|
||||||
if (commit)
|
if (commit)
|
||||||
Commit(kSessionCommit);
|
Commit(kSessionCommit);
|
||||||
|
if (m_mdbStore)
|
||||||
|
{
|
||||||
|
m_mdbStore->CloseMdbObject(m_mdbEnv);
|
||||||
|
m_mdbStore = nsnull;
|
||||||
|
}
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -765,11 +769,6 @@ NS_IMETHODIMP nsAddrDatabase::ForceClosed()
|
||||||
RemoveFromCache(this);
|
RemoveFromCache(this);
|
||||||
|
|
||||||
err = CloseMDB(PR_FALSE); // since we're about to delete it, no need to commit.
|
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();
|
Release();
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче