From 934b5287152006807178b93119aa166f0751df87 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 23 Mar 2022 15:30:59 +0100 Subject: [PATCH] Fix QIcuTimeZonePrivate::data() before the first transition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Provide valid data, since ICU can, by the means we used before the transition API was introduced. Task-number: QTBUG-99747 Pick-to: 6.3 6.2 Change-Id: I4d4a1201db2255b98901dacb83169ae4ae25ef05 Reviewed-by: MÃ¥rten Nordheim --- src/corelib/time/qtimezoneprivate_icu.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/corelib/time/qtimezoneprivate_icu.cpp b/src/corelib/time/qtimezoneprivate_icu.cpp index 1f070571685..f343e0fec26 100644 --- a/src/corelib/time/qtimezoneprivate_icu.cpp +++ b/src/corelib/time/qtimezoneprivate_icu.cpp @@ -429,12 +429,14 @@ QTimeZonePrivate::Data QIcuTimeZonePrivate::data(qint64 forMSecsSinceEpoch) cons #if U_ICU_VERSION_MAJOR_NUM == 50 data = ucalTimeZoneTransition(m_ucal, UCAL_TZ_TRANSITION_PREVIOUS_INCLUSIVE, forMSecsSinceEpoch); -#else - ucalOffsetsAtTime(m_ucal, forMSecsSinceEpoch, &data.standardTimeOffset, - &data.daylightTimeOffset); - data.offsetFromUtc = data.standardTimeOffset + data.daylightTimeOffset; - data.abbreviation = abbreviation(forMSecsSinceEpoch); -#endif // U_ICU_VERSION_MAJOR_NUM == 50 + if (data.atMSecsSinceEpoch == invalidMSecs()) // before first transition +#endif // U_ICU_VERSION_MAJOR_NUM >= 50 + { + ucalOffsetsAtTime(m_ucal, forMSecsSinceEpoch, &data.standardTimeOffset, + &data.daylightTimeOffset); + data.offsetFromUtc = data.standardTimeOffset + data.daylightTimeOffset; + data.abbreviation = abbreviation(forMSecsSinceEpoch); + } data.atMSecsSinceEpoch = forMSecsSinceEpoch; return data; }