From edfc7aa91b542978ce28eb109b99a257650b62b4 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 18 Feb 2023 21:57:39 -0700 Subject: decode_scan, jsonparse: Rework the behavior to make a bit more sense - decode_scan: Don't have .Reset() re-play an erroring rune - decode_Scan: Have RuneTypeEOF always be zero-width - jsonparse: Don't replace syntax errors with RuneTypeEOF if there's no barrier --- internal/jsonparse/parse.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'internal/jsonparse/parse.go') diff --git a/internal/jsonparse/parse.go b/internal/jsonparse/parse.go index d867cbc..06efc8c 100644 --- a/internal/jsonparse/parse.go +++ b/internal/jsonparse/parse.go @@ -545,7 +545,11 @@ func (par *Parser) HandleRune(c rune) (RuneType, error) { case 0x0020, 0x000A, 0x000D, 0x0009: return RuneTypeSpace, nil default: - return RuneTypeEOF, nil + if len(par.barriers) > 0 { + return RuneTypeEOF, nil + } else { + return RuneTypeError, fmt.Errorf("invalid character %q after top-level value", c) + } } } switch par.stack[len(par.stack)-1] { -- cgit v1.2.3-2-g168b