]> Sergey Matveev's repositories - btrtrc.git/commitdiff
bencode.Decoder.Decode: Don't assume panic values are type error
authorMatt Joiner <anacrolix@gmail.com>
Mon, 12 Feb 2018 13:55:15 +0000 (00:55 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 12 Feb 2018 13:55:15 +0000 (00:55 +1100)
bencode/decode.go

index b07ae580c0761e664548411bce70bdc5e56276e9..51a7a2d52ea941cb652f53f296bc43748d3decd3 100644 (file)
@@ -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)
                }
        }()