mirror of
https://github.com/ii64/sonic.git
synced 2026-06-24 18:36:43 +08:00
fix:(decoder) more loose repeatable condition for StreamDecoder (#296)
This commit is contained in:
parent
6e979df0d3
commit
a48cad8488
2 changed files with 17 additions and 1 deletions
|
|
@ -127,7 +127,7 @@ read_more:
|
||||||
|
|
||||||
func (self StreamDecoder) repeatable(err error) bool {
|
func (self StreamDecoder) repeatable(err error) bool {
|
||||||
if ee, ok := err.(SyntaxError); ok &&
|
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 true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|
|
||||||
|
|
@ -36,3 +36,19 @@ func TestIssue293(t *testing.T) {
|
||||||
t.Fatal(err)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue