From: Matt Joiner Date: Mon, 12 Feb 2018 13:55:15 +0000 (+1100) Subject: bencode.Decoder.Decode: Don't assume panic values are type error X-Git-Tag: v1.0.0~177 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=33bfa908d294f47ca979711f703fbf0b15919e6d;p=btrtrc.git bencode.Decoder.Decode: Don't assume panic values are type error --- diff --git a/bencode/decode.go b/bencode/decode.go index b07ae580..51a7a2d5 100644 --- a/bencode/decode.go +++ b/bencode/decode.go @@ -24,11 +24,17 @@ type Decoder struct { func (d *Decoder) Decode(v interface{}) (err error) { defer func() { - if e := recover(); e != nil { - if _, ok := e.(runtime.Error); ok { - panic(e) - } - err = e.(error) + if err != nil { + return + } + r := recover() + _, ok := r.(runtime.Error) + if ok { + panic(r) + } + err, ok = r.(error) + if !ok && r != nil { + panic(r) } }()