fix(memory): reduce memory usage when working with events with a lot of alarms defined in the ics file

This commit is contained in:
Hivert Quentin
2024-02-05 18:01:44 +01:00
parent f56910db1e
commit ff3c3054a6
+16 -24
View File
@@ -1026,40 +1026,32 @@ 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]])
{
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]]];
}
[(iCalEvent *)master setEndDate: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]];
}
else
else
{
component = master;
RETAIN(component);
[(iCalToDo *)master setDue: [NSCalendarDate dateWithTimeIntervalSince1970: [[row objectForKey: @"c_enddate"] intValue]]];
}
// Check if we have any alarm, that could happen for recurrence exceptions with no
// alarm defined.
if ([[component alarms] count])
if ([[master alarms] count])
{
alarm = [component firstSupportedAlarm];
alarm = [master firstSupportedAlarm];
[row setObject: [NSNumber numberWithInt: [[alarm nextAlarmDate] timeIntervalSince1970]]
forKey: @"c_nextalarm"];
forKey: @"c_nextalarm"];
}
RELEASE(component);
}
else
{
alarm = [master firstSupportedAlarm];
[row setObject: [NSNumber numberWithInt: [[alarm nextAlarmDate] timeIntervalSince1970]]
forKey: @"c_nextalarm"];
}
}
//