2
0
Fork 0
mirror of https://github.com/ii64/sonic.git synced 2026-06-20 16:45:22 +08:00

fix:(decoder) more loose repeatable condition for StreamDecoder (#296)

This commit is contained in:
Yi Duan 2022-09-08 16:16:38 +08:00 committed by GitHub
parent 6e979df0d3
commit a48cad8488
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View file

@ -127,7 +127,7 @@ read_more:
func (self StreamDecoder) repeatable(err error) bool {
if ee, ok := err.(SyntaxError); ok &&
(ee.Code == types.ERR_EOF || (ee.Code == types.ERR_INVALID_CHAR && self.i == len(self.s)-1)) {
(ee.Code == types.ERR_EOF || (ee.Code == types.ERR_INVALID_CHAR && self.i >= len(self.s)-1)) {
return true
}
return false

View file

@ -35,4 +35,20 @@ func TestIssue293(t *testing.T) {
if err != nil {
t.Fatal(err)
}
}
func TestIssue293Sign(t *testing.T) {
left := `{"a":`
var data = left+strings.Repeat(" ", 4096 - len(left)-1) + "-33.0}"
sd := decoder.NewStreamDecoder(strings.NewReader(data))
var v = struct{
A json.RawMessage
}{}
err := sd.Decode(&v)
if err != nil {
if e, ok := err.(decoder.SyntaxError); ok {
t.Fatal(e.Description())
}
t.Fatal(err)
}
}