From f85b21ee807f0d5d69a2a08f0998f2ffc2bd5245 Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Mon, 27 Sep 1999 23:39:03 +0000 Subject: [PATCH] breaking cycle between crawler and browser window to fix a leak, using NS_WITH_SERVICE to manage metacharset service. git-svn-id: svn://10.0.0.236/trunk@49160 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/webshell/tests/viewer/nsViewerApp.cpp | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mozilla/webshell/tests/viewer/nsViewerApp.cpp b/mozilla/webshell/tests/viewer/nsViewerApp.cpp index 4f78f35601d..a48b4457e39 100644 --- a/mozilla/webshell/tests/viewer/nsViewerApp.cpp +++ b/mozilla/webshell/tests/viewer/nsViewerApp.cpp @@ -157,12 +157,23 @@ nsViewerApp::QueryInterface(REFNSIID aIID, void** aInstancePtrResult) void nsViewerApp::Destroy() { + nsresult rv; + // Close all of our windows nsBrowserWindow::CloseAllWindows(); // Release the crawler - NS_IF_RELEASE(mCrawler); + if (nsnull != mCrawler) { + // break cycle between crawler and window. + mCrawler->SetBrowserWindow(nsnull); + NS_RELEASE(mCrawler); + } + NS_WITH_SERVICE(nsIMetaCharsetService, metacharset, kMetaCharsetCID, &rv); + if (NS_SUCCEEDED(rv)) { + rv = metacharset->End(); + } + #ifndef NECKO // Only shutdown if Initialize has been called... if (PR_TRUE == mIsInitialized) { @@ -193,18 +204,11 @@ nsViewerApp::SetupRegistry() NS_SetupRegistry(); - nsIMetaCharsetService* metacharset; - rv = nsServiceManager::GetService(kMetaCharsetCID, - kIMetaCharsetServiceIID, - (nsISupports **) &metacharset); - if(!NS_FAILED(rv)) { + NS_WITH_SERVICE(nsIMetaCharsetService, metacharset, kMetaCharsetCID, &rv); + if (NS_SUCCEEDED(rv)) { rv = metacharset->Start(); } - if(!NS_FAILED(rv)) { - rv = nsServiceManager::ReleaseService(kMetaCharsetCID, metacharset); - } - // Register our browser window factory nsIFactory* bwf; NS_NewBrowserWindowFactory(&bwf);