diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-20 06:39:27 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-20 06:39:27 +0000 |
commit | cb0d6fbebbad064a6fdc51e8c22ed24aff623878 (patch) | |
tree | fc2c1790ebc981293b400f5bb60a59c9f123e57d /chrome/browser/autofill | |
parent | f3e73f6708b2be38cdd17dd0127e01d449ae96aa (diff) | |
download | chromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.zip chromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.tar.gz chromium_src-cb0d6fbebbad064a6fdc51e8c22ed24aff623878.tar.bz2 |
Avoid crashing if the AddressBook is broken.
BUG=129022
TEST=watch crash server
Review URL: https://chromiumcodereview.appspot.com/11175020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163162 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autofill')
-rw-r--r-- | chrome/browser/autofill/personal_data_manager_mac.mm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/autofill/personal_data_manager_mac.mm b/chrome/browser/autofill/personal_data_manager_mac.mm index b0b12f5a..8a15e99 100644 --- a/chrome/browser/autofill/personal_data_manager_mac.mm +++ b/chrome/browser/autofill/personal_data_manager_mac.mm @@ -11,6 +11,7 @@ #include "base/format_macros.h" #include "base/guid.h" #include "base/logging.h" +#import "base/mac/scoped_nsexception_enabler.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/stringprintf.h" @@ -68,7 +69,13 @@ class AuxiliaryProfilesImpl { void AuxiliaryProfilesImpl::GetAddressBookMeCard() { profiles_.clear(); - ABAddressBook* addressBook = [ABAddressBook sharedAddressBook]; + // +[ABAddressBook sharedAddressBook] throws an exception internally in + // circumstances that aren't clear. The exceptions are only observed in crash + // reports, so it is unknown whether they would be caught by AppKit and nil + // returned, or if they would take down the app. In either case, avoid + // crashing. http://crbug.com/129022 + ABAddressBook* addressBook = base::mac::PerformSelectorIgnoringExceptions( + NSClassFromString(@"ABAddressBook"), @selector(sharedAddressBook)); ABPerson* me = [addressBook me]; if (!me) return; |