diff --git a/mozilla/webshell/tests/viewer/nsViewerApp.cpp b/mozilla/webshell/tests/viewer/nsViewerApp.cpp index 3063ec58a28..2d62cbbe42b 100644 --- a/mozilla/webshell/tests/viewer/nsViewerApp.cpp +++ b/mozilla/webshell/tests/viewer/nsViewerApp.cpp @@ -212,59 +212,72 @@ nsViewerApp::SetupRegistry() nsCOMPtr servManager; rv = NS_InitXPCOM3(getter_AddRefs(servManager), nsnull, nsnull, kPStaticModules, kStaticModuleCount); + if (NS_FAILED(rv)) + return rv; + do { + nsCOMPtr registrar = do_QueryInterface(servManager); + NS_ASSERTION(registrar, "No nsIComponentRegistrar from get service. see dougt"); + rv = registrar->AutoRegister(nsnull); - nsCOMPtr registrar = do_QueryInterface(servManager); - NS_ASSERTION(registrar, "No nsIComponentRegistrar from get service. see dougt"); - rv = registrar->AutoRegister(nsnull); - - // Register our browser window factory - nsIFactory* bwf; - NS_NewXPBaseWindowFactory(&bwf); - registrar->RegisterFactory(kXPBaseWindowCID, 0, 0, bwf); - NS_RELEASE(bwf); - - // register the cookie manager - nsCOMPtr cookieService = - do_GetService(kCookieServiceCID, &rv); - if (NS_FAILED(rv) || (nsnull == cookieService)) { + // register the cookie manager + nsCOMPtr cookieService = + do_GetService(kCookieServiceCID, &rv); + if (NS_FAILED(rv) || (nsnull == cookieService)) { #ifdef DEBUG - printf("Unable to instantiate Cookie Manager\n"); + printf("Unable to instantiate Cookie Manager\n"); #endif - } + } - return NS_OK; + // Register our browser window factory + nsIFactory* bwf; + rv = NS_NewXPBaseWindowFactory(&bwf); + if (NS_FAILED(rv)) + break; + registrar->RegisterFactory(kXPBaseWindowCID, 0, 0, bwf); + NS_RELEASE(bwf); + } while (0); + if (NS_FAILED(rv)) + NS_ShutdownXPCOM(nsnull); + + return rv; } nsresult nsViewerApp::Initialize(int argc, char** argv) { - nsresult rv; - - rv = SetupRegistry(); + nsresult rv = SetupRegistry(); if (NS_FAILED(rv)) { return rv; } - InitializeWindowCreator(); + do { + rv = InitializeWindowCreator(); - // Create widget application shell - rv = CallCreateInstance(kAppShellCID, &mAppShell); - if (NS_FAILED(rv)) { - return rv; - } - mAppShell->Create(&argc, argv); + // Create widget application shell + rv = CallCreateInstance(kAppShellCID, &mAppShell); + if (NS_FAILED(rv)) + break; - // Load preferences - rv = CallGetService(NS_PREFSERVICE_CONTRACTID, &mPrefService); - if (NS_FAILED(rv)) { - return rv; - } - mPrefService->ReadUserPrefs(nsnull); + rv = mAppShell->Create(&argc, argv); + if (NS_FAILED(rv)) + break; - // Finally process our arguments - rv = ProcessArguments(argc, argv); + // Load preferences + rv = CallGetService(NS_PREFSERVICE_CONTRACTID, &mPrefService); + if (NS_FAILED(rv)) + break; + mPrefService->ReadUserPrefs(nsnull); + + // Finally process our arguments + rv = ProcessArguments(argc, argv); + if (NS_FAILED(rv)) + break; + + mIsInitialized = PR_TRUE; + } while (0); + if (NS_FAILED(rv)) + NS_ShutdownXPCOM(nsnull); - mIsInitialized = PR_TRUE; return rv; } diff --git a/mozilla/webshell/tests/viewer/nsWinMain.cpp b/mozilla/webshell/tests/viewer/nsWinMain.cpp index e9ee9bb00f3..cab6ea10ce5 100644 --- a/mozilla/webshell/tests/viewer/nsWinMain.cpp +++ b/mozilla/webshell/tests/viewer/nsWinMain.cpp @@ -146,12 +146,16 @@ nsNativeBrowserWindow::DispatchMenuItem(PRInt32 aID) int main(int argc, char **argv) { - nsresult rv; - rv = NS_InitXPCOM2(nsnull, nsnull, nsnull); - NS_ASSERTION(NS_SUCCEEDED(rv), "NS_InitXPCOM failed"); nsViewerApp* app = new nsNativeViewerApp(); + if (!app) + return -1; NS_ADDREF(app); - app->Initialize(argc, argv); + nsresult rv = app->Initialize(argc, argv); + if (NS_FAILED(rv)) { + NS_RELEASE(app); + return -2; + } + /* XPCOM is now initialized. we must clean it up. */ int result = app->Run(); app->Exit(); // this exit is needed for the -x case where the close box is never clicked NS_RELEASE(app);