From: Matt Joiner <anacrolix@gmail.com>
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)
 		}
 	}()