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:
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 {
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue