Skip to content

Commit 1490291

Browse files
committed
Bugfix: unexpected string endings
1 parent 5bc9130 commit 1490291

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

json/parse.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,13 +310,12 @@ func (p *Parser) consumeStringToken() bool {
310310
p.r.Move(1)
311311
break
312312
} else if c == 0 {
313-
break
313+
return false
314314
} else if c == '\\' {
315315
if p.r.Peek(1) != 0 {
316316
p.r.Move(1)
317317
} else {
318-
p.r.Move(1)
319-
break
318+
return false
320319
}
321320
}
322321
p.r.Move(1)

json/parse_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func assertGrammars(t *testing.T, s string, grammartypes ...GrammarType) {
1919
tt, _ := p.Next()
2020
if tt == ErrorGrammar {
2121
assert.Equal(t, io.EOF, p.Err(), "error must be EOF in "+stringify)
22-
assert.Equal(t, len(grammartypes), i, "when error occurred we must be at the end in "+stringify)
22+
assert.Equal(t, len(grammartypes), i, "when error occurred we must be at the end in "+s)
2323
break
2424
} else if tt == WhitespaceGrammar {
2525
continue
@@ -99,10 +99,6 @@ func TestGrammars(t *testing.T) {
9999
assertGrammars(t, `{"a": [1, 2], "b": {"c": 3}}`, StartObjectGrammar, StringGrammar, StartArrayGrammar, NumberGrammar, NumberGrammar, EndArrayGrammar, StringGrammar, StartObjectGrammar, StringGrammar, NumberGrammar, EndObjectGrammar, EndObjectGrammar)
100100
assertGrammars(t, "[null,]", StartArrayGrammar, LiteralGrammar, EndArrayGrammar)
101101

102-
// early endings
103-
assertGrammars(t, "\"a", StringGrammar)
104-
assertGrammars(t, "\"a\\", StringGrammar)
105-
106102
assert.Equal(t, "Whitespace", WhitespaceGrammar.String())
107103
assert.Equal(t, "Invalid(100)", GrammarType(100).String())
108104
assert.Equal(t, "Value", ValueState.String())
@@ -121,6 +117,7 @@ func TestGrammarsError(t *testing.T) {
121117
assertGrammarsError(t, "{\"a\" 1}", ErrBadObjectDeclaration)
122118
assertGrammarsError(t, "1.", ErrNoComma)
123119
assertGrammarsError(t, "1e+", ErrNoComma)
120+
assertGrammarsError(t, `{"":"`, io.EOF)
124121
}
125122

126123
func TestStates(t *testing.T) {

0 commit comments

Comments
 (0)