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 idx := 0
for { for {
cursor++ cursor++
c, err := d.valueDecoder.decode(buf, cursor, unsafe.Pointer(uintptr(p)+uintptr(idx)*d.size)) if idx < d.alen {
if err != nil { c, err := d.valueDecoder.decode(buf, cursor, unsafe.Pointer(uintptr(p)+uintptr(idx)*d.size))
return 0, err 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) cursor = skipWhiteSpace(buf, cursor)
switch buf[cursor] { switch buf[cursor] {
case ']': case ']':