e.write_string("e")
case reflect.Interface, reflect.Ptr:
if v.IsNil() {
- break
+ v = reflect.Zero(v.Type().Elem())
+ } else {
+ v = v.Elem()
}
- e.reflect_value(v.Elem())
+ e.reflect_value(v)
default:
panic(&MarshalTypeError{v.Type()})
}
{[]int{}, "le"},
{map[string]int{}, "de"},
{&dummy{1, 2, 3}, "i2ei3ei4e"},
+ {struct {
+ A *string
+ }{nil}, "d1:A0:e"},
+ {struct {
+ A *string
+ }{new(string)}, "d1:A0:e"},
+ {struct {
+ A *string `bencode:",omitempty"`
+ }{nil}, "de"},
+ {struct {
+ A *string `bencode:",omitempty"`
+ }{new(string)}, "d1:A0:e"},
}
func TestRandomEncode(t *testing.T) {