Skip to content

Commit

Permalink
Stop trimming "redundant" trailing transitions. (#281)
Browse files Browse the repository at this point in the history
Even when the last two transitions share a type, we should not
discard the last transition as that might change the point at
which we start to apply the POSIX spec for future transitions.

This will start to make a difference in zoneinfo files compiled
using the 2023d zic for Antarctica/Macquarie, Europe/Riga,
Europe/Tallinn, Europe/Vilnius, and Pacific/Norfolk, where we
previously would have added daylight-time transitions in years
where they did not really apply.
devbww authored Dec 26, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 2acd9f2 commit 2878b41
Showing 1 changed file with 0 additions and 13 deletions.
13 changes: 0 additions & 13 deletions src/time_zone_info.cc
Original file line number Diff line number Diff line change
@@ -765,19 +765,6 @@ bool TimeZoneInfo::Load(ZoneInfoSource* zip) {
version_ = zip->Version();
}

// Trim redundant transitions. zic may have added these to work around
// differences between the glibc and reference implementations (see
// zic.c:dontmerge) or to avoid bugs in old readers. For us, they just
// get in the way when we do future_spec_ extension.
while (hdr.timecnt > 1) {
if (!EquivTransitions(transitions_[hdr.timecnt - 1].type_index,
transitions_[hdr.timecnt - 2].type_index)) {
break;
}
hdr.timecnt -= 1;
}
transitions_.resize(hdr.timecnt);

// Ensure that there is always a transition in the first half of the
// time line (the second half is handled below) so that the signed
// difference between a civil_second and the civil_second of its

0 comments on commit 2878b41

Please sign in to comment.