From 5c9298febf76926dfebc9e63c202440ed7669c76 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Sat, 20 Oct 2012 13:28:31 -0400 Subject: [PATCH] sort the timezone periods chronologically, in reverse order, to ensure that the most recent valid one is used --- SOPE/NGCards/iCalTimeZone.m | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/SOPE/NGCards/iCalTimeZone.m b/SOPE/NGCards/iCalTimeZone.m index bb8796953..354cadc5c 100644 --- a/SOPE/NGCards/iCalTimeZone.m +++ b/SOPE/NGCards/iCalTimeZone.m @@ -196,22 +196,18 @@ static NSArray *knownTimeZones; NSArray *periods; NSEnumerator *periodsList; iCalTimeZonePeriod *period; - NSCalendarDate *occurence; + NSCalendarDate *occurrence; - occurence = nil; - periods = [self childrenWithTag: pName]; - if ([periods count]) - { - periodsList = [periods objectEnumerator]; - period = (iCalTimeZonePeriod *) [periodsList nextObject]; - while (occurence == nil && period) - { - occurence = [period occurenceForDate: aDate]; - period = (iCalTimeZonePeriod *) [periodsList nextObject]; - } - } + occurrence = nil; - return occurence; + periods = [[self childrenWithTag: pName] + sortedArrayUsingSelector: @selector (compare:)]; + periodsList = [periods reverseObjectEnumerator]; + while (!occurrence + && (period = (iCalTimeZonePeriod *) [periodsList nextObject])) + occurrence = [period occurrenceForDate: aDate]; + + return occurrence; } - (iCalTimeZonePeriod *) periodForDate: (NSCalendarDate *) date