tape: Properly allocate maps when decoding KTV
This commit is contained in:
parent
2e03867c66
commit
ba2dc6b53f
@ -116,7 +116,7 @@ func DecodeAnyInto(decoder *Decoder, destination any, tag Tag) (n int, err error
|
||||
func DecodeAny(decoder *Decoder, tag Tag) (value any, n int, err error) {
|
||||
destination, err := skeletonPointer(decoder, tag)
|
||||
if err != nil { return nil, n, err }
|
||||
nn, err := decodeAny(decoder, destination, tag)
|
||||
nn, err := decodeAny(decoder, destination.Elem(), tag)
|
||||
n += nn; if err != nil { return nil, n, err }
|
||||
return destination.Elem().Interface(), n, err
|
||||
}
|
||||
@ -496,7 +496,11 @@ func skeletonValue(decoder *Decoder, tag Tag) (reflect.Value, error) {
|
||||
func skeletonPointer(decoder *Decoder, tag Tag) (reflect.Value, error) {
|
||||
typ, err := typeOf(decoder, tag)
|
||||
if err != nil { return reflect.Value { }, err }
|
||||
return reflect.New(typ), nil
|
||||
value := reflect.New(typ)
|
||||
if tag.Is(KTV) {
|
||||
value.Elem().Set(reflect.MakeMap(typ))
|
||||
}
|
||||
return value, nil
|
||||
}
|
||||
|
||||
// typeOf returns the type of the current tag being decoded. It does not use up
|
||||
|
Loading…
x
Reference in New Issue
Block a user