From e418fcb6cac23711abca7863fb24ce86f16af0df Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 20 Dec 2018 13:37:59 -0500 Subject: [PATCH] (fix) better handle timezone changes (fixes #4624) --- ActiveSync/iCalTimeZone+ActiveSync.m | 26 ++++++++++++++++++++++---- NEWS | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ActiveSync/iCalTimeZone+ActiveSync.m b/ActiveSync/iCalTimeZone+ActiveSync.m index a1bc17003..6b2a911c9 100644 --- a/ActiveSync/iCalTimeZone+ActiveSync.m +++ b/ActiveSync/iCalTimeZone+ActiveSync.m @@ -78,10 +78,28 @@ struct SYSTEMTIME { tzData->wDay = ([mask firstOccurrence] == -1) ? 5 : [mask firstOccurrence]; dateValue = [self startDate]; - tzData->wHour = [dateValue hourOfDay]; - tzData->wMinute = [dateValue minuteOfHour]; - tzData->wSecond = [dateValue secondOfMinute]; - tzData->wMilliseconds = 0; + + if (![dateValue hourOfDay]) + { + if ([mask firstDay]-1 < 0) + tzData->wDayOfWeek = 6; + else + tzData->wDayOfWeek = [mask firstDay]-1; + + tzData->wHour = 23; + tzData->wMinute = 59; + tzData->wSecond = 59; + tzData->wMilliseconds = 999; + } + else + { + tzData->wDayOfWeek = [mask firstDay]; + + tzData->wHour = [dateValue hourOfDay]; + tzData->wMinute = [dateValue minuteOfHour]; + tzData->wSecond = [dateValue secondOfMinute]; + tzData->wMilliseconds = 0; + } } } diff --git a/NEWS b/NEWS index 8eb476d09..cc1d7bc18 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ Bug fixes - [eas] improve search operations and results fetching - [eas] better handle bogus DTStart values - [eas] support for basic UserInformation queries (#4614) + - [eas] better handle timezone changes (#4624) 4.0.4 (2018-10-23) ------------------