diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index eec7d4ae0..2fcd57e3f 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -37,6 +37,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf avatarMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); } @@ -134,7 +135,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFRelease(lFirstName); } } - CFRelease(lContacts); + if (lContacts) CFRelease(lContacts); } [self.tableView reloadData]; } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index bdb6e1b70..ffa5d826a 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -111,8 +111,16 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if ((self = [super init]) != nil) { addressBookMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); - [self loadData]; + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); + if (ABAddressBookGetAuthorizationStatus && ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusNotDetermined) { + ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { + if (granted) [self loadData]; + }); + } else { + [self loadData]; + } + + } return self; } diff --git a/submodules/externals/exosip b/submodules/externals/exosip index 018d0024d..cbb76acfe 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit 018d0024de17e4a616256ca5897ac18c24058c94 +Subproject commit cbb76acfe36aaa0e79911569e218d77c622fa9d4