From 33bfa908d294f47ca979711f703fbf0b15919e6d Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 13 Feb 2018 00:55:15 +1100 Subject: [PATCH] bencode.Decoder.Decode: Don't assume panic values are type error --- bencode/decode.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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) } }() -- 2.50.0