aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Uekermann <florian@uekermann.me>2017-12-01 20:01:55 +0100
committerBrad Fitzpatrick <bradfitz@golang.org>2018-10-03 17:40:17 +0000
commit048de7b1fdfbedd99af4b1f14133ac7e221cb79a (patch)
tree70bcaa25cf3c0f572033613d0a4475e1a98f44fe
parent4559d58ced7f6576df2d2f932e8faeabe712c860 (diff)
downloadgo-048de7b1fdfbedd99af4b1f14133ac7e221cb79a.tar.xz
time: return first error in unsuccessful calls to LoadLocation
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>
-rw-r--r--src/time/zoneinfo.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/time/zoneinfo.go b/src/time/zoneinfo.go
index d2bc642d81..54c76f09e1 100644
--- a/src/time/zoneinfo.go
+++ b/src/time/zoneinfo.go
@@ -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 "..".