Bug 1310814 - Add ObjC exception guards. r=spohl, a=ritu
authorMarkus Stange <mstange@themasta.com>
Tue, 18 Oct 2016 11:23:38 -0400
changeset 356304 5bf38444c8f688d3340d273e601bc63d034477c1
parent 356303 08e2ff6c0deffd0635624d7fdc8f460ea30a2fda
child 356305 09a44149a83927ab6cd3ac482c96f5f1aa79bbed
push id6570
push userraliiev@mozilla.com
push dateMon, 14 Nov 2016 12:26:13 +0000
treeherdermozilla-beta@f455459b2ae5 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersspohl, ritu
bugs1310814
milestone51.0a2
Bug 1310814 - Add ObjC exception guards. r=spohl, a=ritu With the added safety checks it's unlikely that anything in this function will fire ObjC exceptions, but our rule is to have guards around every Objective C function that can directly be called from C++ files. MozReview-Commit-ID: GQ0bN5638Sf
xpcom/base/MacHelpers.mm
--- a/xpcom/base/MacHelpers.mm
+++ b/xpcom/base/MacHelpers.mm
@@ -1,36 +1,41 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsString.h"
 #include "MacHelpers.h"
+#include "nsObjCExceptions.h"
 
 #import <Foundation/Foundation.h>
 
 namespace mozilla {
 
 nsresult
 GetSelectedCityInfo(nsAString& aCountryCode)
 {
+  NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
+
   // Can be replaced with [[NSLocale currentLocale] countryCode] once we build
   // with the 10.12 SDK.
   id countryCode = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
 
   if (![countryCode isKindOfClass:[NSString class]]) {
     return NS_ERROR_FAILURE;
   }
 
   const char* countryCodeUTF8 = [(NSString*)countryCode UTF8String];
 
   if (!countryCodeUTF8) {
     return NS_ERROR_FAILURE;
   }
 
   AppendUTF8toUTF16(countryCodeUTF8, aCountryCode);
   return NS_OK;
+
+  NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
 }
 
 } // namespace Mozilla