bencode/encode.go | 6 +++--- bencode/encode_test.go | 2 +- diff --git a/bencode/encode.go b/bencode/encode.go index de93736245bea44553fa36dd560062fd8532a4d5..c6726edff2a8cb8a01adea16de75e0a0954c3d9d 100644 --- a/bencode/encode.go +++ b/bencode/encode.go @@ -33,6 +33,9 @@ scratch [64]byte } 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 @@ return false } 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 b2a7e612c26b1911428b9ee792dca65ee9fb2f02..86ecc06cfcfbfc23f6a08ffb9fc4fc298affd841 100644 --- a/bencode/encode_test.go +++ b/bencode/encode_test.go @@ -73,7 +73,7 @@ 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)) } }