bencode/decode.go | 16 +++++++++++----- diff --git a/bencode/decode.go b/bencode/decode.go index b07ae580c0761e664548411bce70bdc5e56276e9..51a7a2d52ea941cb652f53f296bc43748d3decd3 100644 --- a/bencode/decode.go +++ b/bencode/decode.go @@ -24,11 +24,17 @@ } 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) } }()