2
0
Fork 0
mirror of https://github.com/ii64/sonic.git synced 2026-06-20 16:45:22 +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 {
return self.p.skipNextNode().Valid()
} 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
}

View file

@ -195,6 +195,16 @@ func TestIterator(t *testing.T) {
if i != int64(loop) {
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) {