diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c index b3b6bfdca..52b6e2250 100644 --- a/ext/json/ext/parser/parser.c +++ b/ext/json/ext/parser/parser.c @@ -753,7 +753,7 @@ static const signed char digit_values[256] = { static uint32_t unescape_unicode(JSON_ParserState *state, const char *sp, const char *spe) { if (RB_UNLIKELY(sp > spe - 4)) { - raise_eos_error_at("incomplete unicode character escape sequence at %s", state, sp - 2); + raise_syntax_error_at("incomplete unicode character escape sequence at %s", state, sp - 2); } const unsigned char *p = (const unsigned char *)sp; diff --git a/test/json/resumable_parser_test.rb b/test/json/resumable_parser_test.rb index a704e9edd..dbf3ea7b6 100644 --- a/test/json/resumable_parser_test.rb +++ b/test/json/resumable_parser_test.rb @@ -179,6 +179,12 @@ def test_parse_byte_by_byte_string assert_resumed_parsing('"te\\u2028st"') assert_resumed_parsing(JSON.generate("te\u2028st")) assert_resumed_parsing(JSON.generate("te \u2028 st")) + + parser = JSON::ResumableParser.new + parser << '"\u12"' + assert_raise JSON::ParserError do + parser.parse + end end def test_parse_byte_by_byte_numbers