]> Cypherpunks repositories - gostls13.git/commitdiff
time: return first error in unsuccessful calls to LoadLocation
authorFlorian Uekermann <florian@uekermann.me>
Fri, 1 Dec 2017 19:01:55 +0000 (20:01 +0100)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 3 Oct 2018 17:40:17 +0000 (17:40 +0000)
Unsuccessful calls to LoadLocation previously returned the first
error encountered while traversing the default list of sources, but
ignored errors from sources specified by ZONEINFO. Whether errors
indicating missing zones or sources were ignored in this process
differed between kinds of sources.
With this change, unsuccessful calls to LoadLocation always return
the first error, not counting errors indicating missing zones or
sources.

Change-Id: Ief2c088f1df53d974b837e6565e784c2b9928ef4
Reviewed-on: https://go-review.googlesource.com/c/81595
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/time/zoneinfo.go

index d2bc642d81312ac09b30aa2e723f3328d08f3abc..54c76f09e146701d101d94b0cd2905af78d162f6 100644 (file)
@@ -288,14 +288,23 @@ func LoadLocation(name string) (*Location, error) {
                env, _ := syscall.Getenv("ZONEINFO")
                zoneinfo = &env
        })
+       var firstErr error
        if *zoneinfo != "" {
                if zoneData, err := loadTzinfoFromDirOrZip(*zoneinfo, name); err == nil {
                        if z, err := LoadLocationFromTZData(name, zoneData); err == nil {
                                return z, nil
                        }
+                       firstErr = err
+               } else if err != syscall.ENOENT {
+                       firstErr = err
                }
        }
-       return loadLocation(name, zoneSources)
+       if z, err := loadLocation(name, zoneSources); err == nil {
+               return z, nil
+       } else if firstErr == nil {
+               firstErr = err
+       }
+       return nil, firstErr
 }
 
 // containsDotDot reports whether s contains "..".