From 889fe1eb39649b87e7c205512d1f032842f59efe Mon Sep 17 00:00:00 2001 From: Hivert Quentin Date: Tue, 13 Feb 2024 17:39:41 +0100 Subject: [PATCH] Revert "fix(memory): reduce memory usage when working with events with a lot of alarms defined in the ics file" This reverts commit ff3c3054a63081e193a3337e01870ac9b94712cf. --- .../Appointments/SOGoAppointmentFolder.m | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 7d29cf47d..fdcbe4bb4 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -1026,32 +1026,40 @@ static Class iCalEventK = nil; - (void) _computeAlarmForRow: (NSMutableDictionary *) row master: (iCalEntityObject *) master { + iCalEntityObject *component; iCalAlarm *alarm; if (![master recurrenceId]) - { - [master setStartDate: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_startdate"] intValue]]]; - if ([master isKindOfClass: [iCalEvent class]]) { - [(iCalEvent *)master setEndDate: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]]; + component = [master copy]; + + [component setStartDate: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_startdate"] intValue]]]; + + if ([component isKindOfClass: [iCalEvent class]]) + { + [(iCalEvent *)component setEndDate: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]]; + } + else + { + [(iCalToDo *)component setDue: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]]; + } } - else - { - [(iCalToDo *)master setDue: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]]; - } - if ([[master alarms] count]) - { - alarm = [master firstSupportedAlarm]; - [row setObject: [NSNumber numberWithInt: [[alarm nextAlarmDate] timeIntervalSince1970]] - forKey: @"c_nextalarm"]; - } - } else - { - alarm = [master firstSupportedAlarm]; - [row setObject: [NSNumber numberWithInt: [[alarm nextAlarmDate] timeIntervalSince1970]] - forKey: @"c_nextalarm"]; - } + { + component = master; + RETAIN(component); + } + + // Check if we have any alarm, that could happen for recurrence exceptions with no + // alarm defined. + if ([[component alarms] count]) + { + alarm = [component firstSupportedAlarm]; + [row setObject: [NSNumber numberWithInt: [[alarm nextAlarmDate] timeIntervalSince1970]] + forKey: @"c_nextalarm"]; + } + + RELEASE(component); } //