1
0
mirror of https://frontier.innolan.net/rainlance/amiga-tz.git synced 2026-05-06 16:58:22 +00:00

zic: work around GNOME bug by refusing to go back before the Big Bang

This works around Gnome bug 730332
<https://bugzilla.gnome.org/show_bug.cgi?id=730332>.
zic 2014c introduced the idea of generating a transition at the
minimum time value -2**63, to avoid ambiguities about what to do
before the first real transition.  Through Glib release 2.40, the
interval_end function of Glib's gtimezone.c subtracts one from
this, to find the end time of the zeroth interval (i.e., the
interval containing all the "early" time stamps); this subtraction
typically overflows and wraps around to 2**63 - 1, which causes
Glib to go off the rails and assume that all time stamps are
"early".  For example, Glib computes Sao Paulo time stamps as if
Brazil's circa-1913 rules were still in effect.
(Thanks to Leonardo Chiquitto for reporting the bug.)
Work around the bug by not generating time stamps equal to -2**63.
Come to think of it, time stamps before the Big Bang are physically
suspect anyway, so don't generate time stamps before the Big Bang.
* Makefile (GCC_DEBUG_FLAGS): Add comment re BIG_BANG.
* NEWS, zic.8 (NOTES): Document this.
* zic.c (BIG_BANG): New macro.
(big_bang_time): New constant.
(writezone, outzone, addtt): Compare to big_bang_time, not to
min_time, when deciding whether to output a time stamp.
This commit is contained in:
Paul Eggert
2014-05-23 22:56:18 -03:00
parent 9dc32cd094
commit b22d459a36
4 changed files with 50 additions and 6 deletions

9
NEWS
View File

@@ -1,6 +1,15 @@
News for the tz database
Unreleased, experimental changes
Changes affecting code
zic no longer generates files containing time stamps before the Big Bang.
This works around GNOME bug 730332
<https://bugzilla.gnome.org/show_bug.cgi?id=730332>.
Release 2014c - 2014-05-13 07:44:13 -0700
Changes affecting near-future time stamps