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:
parent
b52e528dc6
commit
3e6f839fb6
2 changed files with 15 additions and 1 deletions
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue