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); } //