aboutsummaryrefslogtreecommitdiff
path: root/src/errors/wrap.go
diff options
context:
space:
mode:
authorLE Manh Cuong <cuong.manhle.vn@gmail.com>2019-05-05 23:20:26 +0700
committerBrad Fitzpatrick <bradfitz@golang.org>2019-05-06 17:02:59 +0000
commit0bf1f02ed921ec2f78b27f133e7a688d3e8fa82e (patch)
tree62c1ad2005535404765125562597f0ee3ec2a842 /src/errors/wrap.go
parent79f79c34deba28934d42d4a1b2ab72d124d737a2 (diff)
downloadgo-0bf1f02ed921ec2f78b27f133e7a688d3e8fa82e.tar.xz
errors: fix Is panics if target is uncomparable
Fixes #31841 Change-Id: I3f068686154fd2fa5755b0df47b4eaa5c9a19107 Reviewed-on: https://go-review.googlesource.com/c/go/+/175260 Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/errors/wrap.go')
-rw-r--r--src/errors/wrap.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/errors/wrap.go b/src/errors/wrap.go
index 04ddf79ba3..69dd9464ec 100644
--- a/src/errors/wrap.go
+++ b/src/errors/wrap.go
@@ -51,8 +51,10 @@ func Is(err, target error) bool {
if target == nil {
return err == target
}
+
+ isComparable := target == nil || reflectlite.TypeOf(target).Comparable()
for {
- if err == target {
+ if isComparable && err == target {
return true
}
if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {