From 22292839bc2cc1e0b5acab869cc379775f92746f Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 22 Feb 2011 20:29:04 +0000 Subject: [PATCH] See Changelog. Monotone-Parent: 4e80269c9a4c19167cb40423b5d143cad86c7adf Monotone-Revision: 4dce7f2bb0060199c33ebafe2626104c2cc729ec Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2011-02-22T20:29:04 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 +++++++ UI/Scheduler/UIxCalListingActions.m | 22 ++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) 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]; + } } } }