From 1fb64de07c5a5f701338e4c2e29275b4df1da4ad Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 23 Oct 2015 12:35:38 +1100 Subject: [PATCH] bencode: Encoding nil interfaces are an error except at data root --- bencode/encode.go | 6 +++--- bencode/encode_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bencode/encode.go b/bencode/encode.go index de937362..c6726edf 100644 --- a/bencode/encode.go +++ b/bencode/encode.go @@ -33,6 +33,9 @@ type encoder struct { } func (e *encoder) encode(v interface{}) (err error) { + if v == nil { + return + } defer func() { if e := recover(); e != nil { if _, ok := e.(runtime.Error); ok { @@ -106,9 +109,6 @@ func (e *encoder) reflect_marshaler(v reflect.Value) bool { } func (e *encoder) reflect_value(v reflect.Value) { - if !v.IsValid() { - return - } if e.reflect_marshaler(v) { return diff --git a/bencode/encode_test.go b/bencode/encode_test.go index b2a7e612..86ecc06c 100644 --- a/bencode/encode_test.go +++ b/bencode/encode_test.go @@ -73,7 +73,7 @@ var random_encode_tests = []random_encode_test{ func TestRandomEncode(t *testing.T) { for _, test := range random_encode_tests { data, err := Marshal(test.value) - assert.NoError(t, err) + assert.NoError(t, err, "%s", test) assert.EqualValues(t, test.expected, string(data)) } }