зеркало из https://github.com/mozilla/gecko-dev.git
Bug 739674 - test_tmpl_storage_bad_parameters_2.xul (and others) don't close their database. r=enndeakin.
This commit is contained in:
Родитель
9f3b39e3e1
Коммит
60e79c044a
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче