[PROPOSED] zic: keep needed last transition to new type
* NEWS: Mention this. * zic.c (outzone): Omit an incorrect use of ‘useuntil’. This fixes a bug in 2023-10-15’s “Fix zic bug with Palestine after 2075” (commit 35c116b7536a36c43eb7cd36bff71ad0c5ecf071), which caused zic to mess up if the last transition is to a new time type. This patch does not affect any TZif files generated by current tzdata. This artificial input illustrates the bug: Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D Rule Canada 2007 max - Nov Sun>=1 2:00 0 S Zone America/Vancouver -8:00 - PST 2026 Mar 9 -8:00 Canada P%sT 2026 Nov 1 02:00 -7:00 - MST Without the fix, zic generates a nonconforming TZif file that omits the last transition even though the trailing TZ string is "MST7". --- NEWS | 7 +++++++ zic.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 267e62da..d7bf5a3c 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ News for the tz database Unreleased, experimental changes + Briefly: + British Columbia moves to permanent -07 on 2026-03-09. + Changes to future timestamps British Columbia's 2026-03-08 spring forward will be its last @@ -12,6 +15,10 @@ Unreleased, experimental changes a limitation in CLDR v48.1 (2026-01-08). This temporary hack is planned to be removed after CLDR is fixed. + Changes to code + + zic no longer mishandles a last transition to a new time type. + Release 2026a - 2026-03-01 22:59:49 -0800 diff --git a/zic.c b/zic.c index c10be426..225ad419 100644 --- a/zic.c +++ b/zic.c @@ -3522,7 +3522,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount) startttisut); if (usestart) { addtt(starttime, type); - if (useuntil && nonTZlimtime < starttime) { + if (nonTZlimtime < starttime) { nonTZlimtime = starttime; nonTZlimtype = type; } -- 2.51.0
participants (1)
-
Paul Eggert