msgpack
msgpack copied to clipboard
panic: reflect: reflect.Value.SetString using unaddressable value
This code will panic, And I found it is because of github.com/vmihailenco/msgpack/v5/decode_ value.go:130
, Therefore, if I replace S1 with a null pointer, there will be no panic. Is this a bug

func TestMsgpack(t *testing.T) {
type demo struct{}
t1 := []interface{}{nil}
data, _ := Marshal(t1)
//var s1 *demo
s1 := new(demo)
us := []interface{}{s1}
Unmarshal(data, &us)
}
func Marshal(v interface{}) ([]byte, error) {
enc := msgpack.GetEncoder()
defer msgpack.PutEncoder(enc)
var buf bytes.Buffer
enc.Reset(&buf)
err := enc.Encode(v)
if err != nil {
return nil, err
}
return buf.Bytes(), err
}
func Unmarshal(data []byte, v interface{}) error {
dec := msgpack.GetDecoder()
defer msgpack.PutDecoder(dec)
dec.Reset(bytes.NewReader(data))
err := dec.Decode(v)
return err
}