From 0c8c2d7ecb2d2511d3d47feee602ddd63f66539f Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Fri, 5 Sep 2025 14:19:29 +0200 Subject: [PATCH] Prevent crash by copying Friend addresses and phone numbers before removal --- Linphone/Contacts/ContactsManager.swift | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Linphone/Contacts/ContactsManager.swift b/Linphone/Contacts/ContactsManager.swift index dfa366272..4c9281ff0 100644 --- a/Linphone/Contacts/ContactsManager.swift +++ b/Linphone/Contacts/ContactsManager.swift @@ -292,9 +292,11 @@ final class ContactsManager: ObservableObject { friend.organization = contact.organizationName var friendAddresses: [Address] = [] - friend.addresses.forEach({ address in + let existingAddresses = Array(friend.addresses) + for address in existingAddresses { friend.removeAddress(address: address) - }) + } + contact.sipAddresses.forEach { sipAddress in if !sipAddress.isEmpty { let address = core.interpretUrl(url: sipAddress, applyInternationalPrefix: true) @@ -307,9 +309,11 @@ final class ContactsManager: ObservableObject { } var friendPhoneNumbers: [PhoneNumber] = [] - friend.phoneNumbersWithLabel.forEach({ phoneNumber in + let existingPhoneNumbers = Array(friend.phoneNumbersWithLabel) + for phoneNumber in existingPhoneNumbers { friend.removePhoneNumberWithLabel(phoneNumber: phoneNumber) - }) + } + contact.phoneNumbers.forEach { phone in do { if (friendPhoneNumbers.firstIndex(where: {$0.num == phone.num})) == nil {