diff options
author | Ian Lance Taylor <iant@golang.org> | 2020-10-22 15:25:00 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2020-10-29 22:30:04 +0000 |
commit | cfc89399c9e3c9409efce3d0e88f7cde58cc469d (patch) | |
tree | 527556d075f908effe5e16d5c79343f3d5465b3d | |
parent | 1f040e0a6184ef813b8aaf7ce8e409a663939f75 (diff) | |
download | go-cfc89399c9e3c9409efce3d0e88f7cde58cc469d.tar.gz go-cfc89399c9e3c9409efce3d0e88f7cde58cc469d.zip |
[release-branch.go1.14] time: support slim tzdata format
Backport of part of https://golang.org/cl/261877 to support the slim
tzdata format. As of tzdata 2020b, the default is to use the slim format.
We need to support that format so that Go installations continue to
work when tzdata is updated.
Relevant part of the CL description:
The reason for the failed tests was that when caching location data, the
extended time format past the end of zone transitions was not
considered. The respective change was introduced in (*Location).lookup
by CL 215539.
For #42155
Change-Id: I37f52a0917b2c6e3957e6b4612c8ef104c736e65
Reviewed-on: https://go-review.googlesource.com/c/go/+/264301
Trust: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
(cherry picked from commit 414668cfbc41fd8cadf74e981849d1e05cc23b2e)
Reviewed-on: https://go-review.googlesource.com/c/go/+/266298
Run-TryBot: Ian Lance Taylor <iant@golang.org>
-rw-r--r-- | src/time/zoneinfo_read.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/time/zoneinfo_read.go b/src/time/zoneinfo_read.go index 38c40b53d4..b79bd474c7 100644 --- a/src/time/zoneinfo_read.go +++ b/src/time/zoneinfo_read.go @@ -313,8 +313,16 @@ func LoadLocationFromTZData(name string, data []byte) (*Location, error) { l.cacheEnd = omega if i+1 < len(tx) { l.cacheEnd = tx[i+1].when + } else if l.extend != "" { + // If we're at the end of the known zone transitions, + // try the extend string. + if _, _, estart, eend, ok := tzset(l.extend, l.cacheEnd, sec); ok { + l.cacheStart = estart + l.cacheEnd = eend + } } l.cacheZone = &l.zone[tx[i].index] + break } } |