Fix array decoder

This commit is contained in:
Masaaki Goshima 2020-12-24 23:14:58 +09:00
parent 3ffbfe413f
commit 44ae468930
1 changed files with 12 additions and 4 deletions

View File

@ -102,11 +102,19 @@ func (d *arrayDecoder) decode(buf []byte, cursor int64, p unsafe.Pointer) (int64
idx := 0
for {
cursor++
c, err := d.valueDecoder.decode(buf, cursor, unsafe.Pointer(uintptr(p)+uintptr(idx)*d.size))
if err != nil {
return 0, err
if idx < d.alen {
c, err := d.valueDecoder.decode(buf, cursor, unsafe.Pointer(uintptr(p)+uintptr(idx)*d.size))
if err != nil {
return 0, err
}
cursor = c
} else {
c, err := skipValue(buf, cursor)
if err != nil {
return 0, err
}
cursor = c
}
cursor = c
cursor = skipWhiteSpace(buf, cursor)
switch buf[cursor] {
case ']':