]> Cypherpunks repositories - gostls13.git/commitdiff
time: support version 3 zone records
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 3 Jun 2014 02:44:17 +0000 (11:44 +0900)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 3 Jun 2014 02:44:17 +0000 (11:44 +0900)
Fixes #8134

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r, rsc
https://golang.org/cl/100930044

src/pkg/time/zoneinfo_read.go
src/pkg/time/zoneinfo_test.go

index 4bb4bf665cc23675fd6c39e56e3d1710418cd379..de9ebb41c827f4c25ae69ff92c20815a455f7abb 100644 (file)
@@ -68,7 +68,7 @@ func loadZoneData(bytes []byte) (l *Location, err error) {
 
        // 1-byte version, then 15 bytes of padding
        var p []byte
-       if p = d.read(16); len(p) != 16 || p[0] != 0 && p[0] != '2' {
+       if p = d.read(16); len(p) != 16 || p[0] != 0 && p[0] != '2' && p[0] != '3' {
                return nil, badData
        }
 
@@ -123,7 +123,7 @@ func loadZoneData(bytes []byte) (l *Location, err error) {
                return nil, badData
        }
 
-       // If version == 2, the entire file repeats, this time using
+       // If version == 2 or 3, the entire file repeats, this time using
        // 8-byte ints for txtimes and leap seconds.
        // We won't need those until 2106.
 
index 4653babc2f50a48ea473fb88513ebb6b6f5edbce..4ca7fad938c17c819a2217c7e12da04f2896a600 100644 (file)
@@ -9,6 +9,15 @@ import (
        "time"
 )
 
+func TestVersion3(t *testing.T) {
+       time.ForceZipFileForTesting(true)
+       defer time.ForceZipFileForTesting(false)
+       _, err := time.LoadLocation("Asia/Jerusalem")
+       if err != nil {
+               t.Fatal(err)
+       }
+}
+
 // Test that we get the correct results for times before the first
 // transition time.  To do this we explicitly check early dates in a
 // couple of specific timezones.