diff --git a/ChangeLog b/ChangeLog index 43acae09f..75dffb6a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-02-22 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ( + -_fillBlocks:withEvent:withNumber:): don't compute the block if + the end date is before the start date. This fixes a rare segfault that + occurs with recurrent event with multiple exceptions. + 2011-02-17 Francis Lachapelle * SoObjects/Contacts/SOGoFolder+CardDAV.m (-parseContactFilter:): diff --git a/UI/Scheduler/UIxCalListingActions.m b/UI/Scheduler/UIxCalListingActions.m index 9565b0f2b..63ca20c42 100644 --- a/UI/Scheduler/UIxCalListingActions.m +++ b/UI/Scheduler/UIxCalListingActions.m @@ -728,14 +728,20 @@ _userStateInEvent (NSArray *event) offset++; currentDay = [blocks objectAtIndex: offset]; } - eventBlock = [self _eventBlockWithStart: currentStart - end: eventEnd - number: number - onDay: currentDayStart - recurrenceTime: recurrenceTime - userState: userState]; - [currentDay addObject: eventBlock]; - } + if (eventEnd > currentStart) + { + eventBlock = [self _eventBlockWithStart: currentStart + end: eventEnd + number: number + onDay: currentDayStart + recurrenceTime: recurrenceTime + userState: userState]; + [currentDay addObject: eventBlock]; + } + else + [self warnWithFormat: @"event '%@' has end < start: %d < %d", + [event objectAtIndex: eventNameIndex], eventEnd, currentStart]; + } } } }