diff --git a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m index 7ecc8f09c..c8b5d0e43 100644 --- a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m @@ -93,11 +93,13 @@ if (until) { lastStartDate = until; + lastEndDate = until; } else { repeatCount = [rrule repeatCount]; if (dayMask == nil) + { // If there's no day mask, we can compute the date of the last // occurrence of the recurrent rule. lastStartDate = [firStart dateByAddingYears: 0 months: 0 @@ -106,6 +108,7 @@ lastEndDate = [firEnd dateByAddingYears: 0 months: 0 days: (interval * (repeatCount - 1))]; + } } if (lastStartDate != nil && lastEndDate != nil) diff --git a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m index 5879ed252..afbbd2742 100644 --- a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m @@ -230,10 +230,11 @@ static inline unsigned iCalDoWForNSDoW (int dow) else { untilStart = [rrule untilDate]; + untilEnd = [rrule untilDate]; } } - if (untilStart != nil) + if (untilStart != nil && untilEnd != nil) { if ([untilEnd compare: rStart] == NSOrderedAscending) // Range starts after last occurrence diff --git a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m index 5be2a1344..a78ca4d22 100644 --- a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m @@ -102,11 +102,15 @@ lastEndDate = nil; until = [rrule untilDate]; if (until) + { lastStartDate = until; + lastEndDate = until; + } else { repeatCount = [rrule repeatCount]; if (dayMask == nil) + { // When there's no BYxxx mask, we can find the date of the last // occurrence. lastStartDate = [firStart dateByAddingYears: 0 months: 0 @@ -115,6 +119,7 @@ lastEndDate = [firEnd dateByAddingYears: 0 months: 0 days: (interval * (repeatCount - 1) * 7)]; + } } if (lastStartDate != nil && lastEndDate != nil) diff --git a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m index bdf285dc7..8f0733a5e 100644 --- a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m @@ -80,10 +80,12 @@ if (until) { lastStartDate = until; + lastEndDate = until; } if (repeatCount > 0) { if (lastStartDate == nil && ![rrule hasByMask]) + { // When there's no BYxxx mask, we can find the date of the last // occurrence. lastStartDate = [firStart dateByAddingYears: (interval * (repeatCount - 1)) @@ -92,6 +94,7 @@ lastEndDate = [firEnd dateByAddingYears: (interval * (repeatCount - 1)) months: 0 days: 0]; + } referenceDate = firStart; }