Bug 739674 - test_tmpl_storage_bad_parameters_2.xul (and others) don't close their database. r=enndeakin.

This commit is contained in:
Rafael Ávila de Espíndola 2012-04-03 17:12:31 -04:00
Родитель 9f3b39e3e1
Коммит 60e79c044a
3 изменённых файлов: 25 добавлений и 8 удалений

Просмотреть файл

@ -218,6 +218,23 @@ nsXULTemplateBuilder::InitGlobals()
return mPool.Init("nsXULTemplateBuilder", bucketsizes, 1, 256);
}
void
nsXULTemplateBuilder::CleanUp(bool aIsFinal)
{
for (PRInt32 q = mQuerySets.Length() - 1; q >= 0; q--) {
nsTemplateQuerySet* qs = mQuerySets[q];
delete qs;
}
mQuerySets.Clear();
mMatchMap.Enumerate(DestroyMatchList, &mPool);
// Setting mQueryProcessor to null will close connections. This would be
// handled by the cycle collector, but we want to close them earlier.
if (aIsFinal)
mQueryProcessor = nsnull;
}
void
nsXULTemplateBuilder::Uninit(bool aIsFinal)
@ -232,14 +249,7 @@ nsXULTemplateBuilder::Uninit(bool aIsFinal)
if (mQueryProcessor)
mQueryProcessor->Done();
for (PRInt32 q = mQuerySets.Length() - 1; q >= 0; q--) {
nsTemplateQuerySet* qs = mQuerySets[q];
delete qs;
}
mQuerySets.Clear();
mMatchMap.Enumerate(DestroyMatchList, &mPool);
CleanUp(aIsFinal);
mRootResult = nsnull;
mRefVariable = nsnull;
@ -1188,6 +1198,8 @@ nsXULTemplateBuilder::ContentRemoved(nsIDocument* aDocument,
if (xulcontent)
xulcontent->ClearTemplateGenerated();
CleanUp(true);
mDB = nsnull;
mCompDB = nsnull;
mDataSource = nsnull;

Просмотреть файл

@ -81,6 +81,8 @@ class nsXULTemplateBuilder : public nsIXULTemplateBuilder,
public nsIObserver,
public nsStubDocumentObserver
{
void CleanUp(bool aIsFinal);
public:
nsXULTemplateBuilder();
virtual ~nsXULTemplateBuilder();

Просмотреть файл

@ -1919,6 +1919,9 @@ nsXULTreeBuilder::CompareResults(nsIXULTemplateResult* aLeft, nsIXULTemplateResu
}
PRInt32 sortorder;
if (!mQueryProcessor)
return 0;
mQueryProcessor->CompareResults(aLeft, aRight, mSortVariable, mSortHints, &sortorder);
if (sortorder)