]> Sergey Matveev's repositories - btrtrc.git/commitdiff
bencode: Encoding nil interfaces are an error except at data root
authorMatt Joiner <anacrolix@gmail.com>
Fri, 23 Oct 2015 01:35:38 +0000 (12:35 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 23 Oct 2015 01:35:38 +0000 (12:35 +1100)
bencode/encode.go
bencode/encode_test.go

index de93736245bea44553fa36dd560062fd8532a4d5..c6726edff2a8cb8a01adea16de75e0a0954c3d9d 100644 (file)
@@ -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
index b2a7e612c26b1911428b9ee792dca65ee9fb2f02..86ecc06cfcfbfc23f6a08ffb9fc4fc298affd841 100644 (file)
@@ -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))
        }
 }