2
0
Fork 0
mirror of https://github.com/ii64/sonic.git synced 2026-06-21 00:46:43 +08:00

fix iterator traversal empty object panic (#314)

This commit is contained in:
linuxsong 2022-10-18 10:59:51 +08:00 committed by GitHub
parent b52e528dc6
commit 3e6f839fb6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View file

@ -63,7 +63,11 @@ func (self *Iterator) HasNext() bool {
} else if self.p.t == _V_ARRAY_LAZY { } else if self.p.t == _V_ARRAY_LAZY {
return self.p.skipNextNode().Valid() return self.p.skipNextNode().Valid()
} else if self.p.t == _V_OBJECT_LAZY { } else if self.p.t == _V_OBJECT_LAZY {
return self.p.skipNextPair().Value.Valid() pair := self.p.skipNextPair()
if pair == nil {
return false
}
return pair.Value.Valid()
} }
return false return false
} }

View file

@ -195,6 +195,16 @@ func TestIterator(t *testing.T) {
if i != int64(loop) { if i != int64(loop) {
t.Fatal(i) t.Fatal(i)
} }
str, _ = getTestIteratorSample(0)
root, err = NewParser(str).Parse()
if err != 0 {
t.Fatal(err)
}
mi, _ = root.Get("object").Properties()
if mi.HasNext() {
t.Fatalf("should not have next")
}
} }
func BenchmarkArrays(b *testing.B) { func BenchmarkArrays(b *testing.B) {