firefox-shell-bmo624267.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 12 Jan 2011 22:45:15 +0100
changeset 210 f4f4388b26a8
permissions -rw-r--r--
update to 2.0b9/4.0b9 removed firefox-appname.patch merge wip patches for GIO support from bmo

# HG changeset patch
# Parent 6c4a0e0acb3a071dbfde60e975f68f18c85bbff8
# User timeless@mozdev.org
Bug 624267 Crash on Ubuntu [@ nsGNOMEShellService::SetDefaultBrowser ]
r=roc

diff --git a/browser/components/shell/src/nsGNOMEShellService.cpp b/browser/components/shell/src/nsGNOMEShellService.cpp
--- a/browser/components/shell/src/nsGNOMEShellService.cpp
+++ b/browser/components/shell/src/nsGNOMEShellService.cpp
@@ -214,30 +214,31 @@ nsGNOMEShellService::SetDefaultBrowser(P
 #endif
 
   nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
-
-  nsCAutoString appKeyValue(mAppPath);
-  appKeyValue.Append(" \"%s\"");
-  unsigned int i;
-
-  for (i = 0; i < NS_ARRAY_LENGTH(appProtocols); ++i) {
-    if (appProtocols[i].essential || aClaimAllTypes) {
-      gconf->SetAppForProtocol(nsDependentCString(appProtocols[i].name),
-                               appKeyValue);
+  if (gconf) {
+    nsCAutoString appKeyValue(mAppPath);
+    appKeyValue.Append(" \"%s\"");
+    for (unsigned int i = 0; i < NS_ARRAY_LENGTH(appProtocols); ++i) {
+      if (appProtocols[i].essential || aClaimAllTypes) {
+        gconf->SetAppForProtocol(nsDependentCString(appProtocols[i].name),
+                                 appKeyValue);
+      }
     }
   }
 
   // set handler for .html and xhtml files and MIME types:
   if (aClaimAllTypes) {
+    nsresult rv;
     nsCOMPtr<nsIGIOService> giovfs =
-      do_GetService(NS_GIOSERVICE_CONTRACTID);
+      do_GetService(NS_GIOSERVICE_CONTRACTID, &rv);
+    NS_ENSURE_SUCCESS(rv, rv);
 
     nsCOMPtr<nsIStringBundleService> bundleService =
-      do_GetService(NS_STRINGBUNDLE_CONTRACTID);
-    NS_ENSURE_TRUE(bundleService, NS_ERROR_OUT_OF_MEMORY);
+      do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
+    NS_ENSURE_SUCCESS(rv, rv);
 
     nsCOMPtr<nsIStringBundle> brandBundle;
-    bundleService->CreateBundle(BRAND_PROPERTIES, getter_AddRefs(brandBundle));
-    NS_ENSURE_TRUE(brandBundle, NS_ERROR_FAILURE);
+    rv = bundleService->CreateBundle(BRAND_PROPERTIES, getter_AddRefs(brandBundle));
+    NS_ENSURE_SUCCESS(rv, rv);
 
     nsString brandShortName, brandFullName;
     brandBundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(),
@@ -247,17 +248,16 @@ nsGNOMEShellService::SetDefaultBrowser(P
 
     // use brandShortName as the application id.
     NS_ConvertUTF16toUTF8 id(brandShortName);
-    if (giovfs) {
-      nsCOMPtr<nsIGIOMimeApp> appInfo;
-      giovfs->CreateAppFromCommand(mAppPath,
-                                id,
-                                getter_AddRefs(appInfo));
+    nsCOMPtr<nsIGIOMimeApp> appInfo;
+    rv = giovfs->CreateAppFromCommand(mAppPath,
+                                      id,
+                                      getter_AddRefs(appInfo));
+    NS_ENSURE_SUCCESS(rv, rv);
 
-      // Add mime types for html, xhtml extension and set app to just created appinfo.
-      for (i = 0; i < NS_ARRAY_LENGTH(appTypes); ++i) {
-        appInfo->SetAsDefaultForMimeType(nsDependentCString(appTypes[i].mimeType));
-        appInfo->SetAsDefaultForFileExtensions(nsDependentCString(appTypes[i].extensions));
-      }
+    // Add mime types for html, xhtml extension and set app to just created appinfo.
+    for (unsigned int i = 0; i < NS_ARRAY_LENGTH(appTypes); ++i) {
+      appInfo->SetAsDefaultForMimeType(nsDependentCString(appTypes[i].mimeType));
+      appInfo->SetAsDefaultForFileExtensions(nsDependentCString(appTypes[i].extensions));
     }
   }