|
|
|
@ -157,7 +157,7 @@ func decodeAny(decoder *Decoder, destination reflect.Value, tag Tag) (n int, err
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
itemTag, nn, err := decoder.ReadTag()
|
|
|
|
itemTag, nn, err := decoder.ReadTag()
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
value, err := skeletonValue(itemTag)
|
|
|
|
value, err := skeletonValue(decoder, itemTag)
|
|
|
|
if err != nil { return n, err }
|
|
|
|
if err != nil { return n, err }
|
|
|
|
nn, err = decodeAny(decoder, value.Elem(), itemTag)
|
|
|
|
nn, err = decodeAny(decoder, value.Elem(), itemTag)
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
@ -304,7 +304,7 @@ func decodeAndSetFloat(decoder *Decoder, destination reflect.Value, bytes int) (
|
|
|
|
|
|
|
|
|
|
|
|
// skeletonValue returns a pointer value. In order for it to be set, it must be
|
|
|
|
// skeletonValue returns a pointer value. In order for it to be set, it must be
|
|
|
|
// dereferenced using Elem().
|
|
|
|
// dereferenced using Elem().
|
|
|
|
func skeletonValue(tag Tag) (reflect.Value, error) {
|
|
|
|
func skeletonValue(decoder *Decoder, tag Tag) (reflect.Value, error) {
|
|
|
|
switch tag.WithoutCN() {
|
|
|
|
switch tag.WithoutCN() {
|
|
|
|
case SI:
|
|
|
|
case SI:
|
|
|
|
value := uint8(0)
|
|
|
|
value := uint8(0)
|
|
|