Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions ext/json/ext/parser/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -1659,7 +1659,9 @@ case 7:
if (json->symbolize_names && json->parsing_name) {
*result = rb_str_intern(*result);
} else {
rb_str_resize(*result, RSTRING_LEN(*result));
if (RB_TYPE_P(*result, T_STRING)) {
rb_str_resize(*result, RSTRING_LEN(*result));
}
}
if (cs >= JSON_string_first_final) {
return p + 1;
Expand Down Expand Up @@ -1830,15 +1832,15 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
}


#line 1834 "parser.c"
#line 1836 "parser.c"
enum {JSON_start = 1};
enum {JSON_first_final = 10};
enum {JSON_error = 0};

enum {JSON_en_main = 1};


#line 742 "parser.rl"
#line 744 "parser.rl"


/*
Expand All @@ -1855,16 +1857,16 @@ static VALUE cParser_parse(VALUE self)
GET_PARSER;


#line 1859 "parser.c"
#line 1861 "parser.c"
{
cs = JSON_start;
}

#line 758 "parser.rl"
#line 760 "parser.rl"
p = json->source;
pe = p + json->len;

#line 1868 "parser.c"
#line 1870 "parser.c"
{
if ( p == pe )
goto _test_eof;
Expand Down Expand Up @@ -1898,7 +1900,7 @@ case 1:
cs = 0;
goto _out;
tr2:
#line 734 "parser.rl"
#line 736 "parser.rl"
{
char *np = JSON_parse_value(json, p, pe, &result, 0);
if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}
Expand All @@ -1908,7 +1910,7 @@ cs = 0;
if ( ++p == pe )
goto _test_eof10;
case 10:
#line 1912 "parser.c"
#line 1914 "parser.c"
switch( (*p) ) {
case 13: goto st10;
case 32: goto st10;
Expand Down Expand Up @@ -1997,7 +1999,7 @@ case 9:
_out: {}
}

#line 761 "parser.rl"
#line 763 "parser.rl"

if (cs >= JSON_first_final && p == pe) {
return result;
Expand Down
5 changes: 4 additions & 1 deletion ext/json/ext/parser/parser.rl
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,9 @@ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *resu
if (json->symbolize_names && json->parsing_name) {
*result = rb_str_intern(*result);
} else {
rb_str_resize(*result, RSTRING_LEN(*result));
if (RB_TYPE_P(*result, T_STRING)) {
rb_str_resize(*result, RSTRING_LEN(*result));
}
}
if (cs >= JSON_string_first_final) {
return p + 1;
Expand Down Expand Up @@ -824,6 +826,7 @@ static VALUE cParser_source(VALUE self)

void Init_parser(void)
{
#undef rb_intern
rb_require("json/common");
mJSON = rb_define_module("JSON");
mExt = rb_define_module_under(mJSON, "Ext");
Expand Down