diff options
Diffstat (limited to 'dev-ruby/json/files/json-2.1.0-ruby26-2.patch')
-rw-r--r-- | dev-ruby/json/files/json-2.1.0-ruby26-2.patch | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/dev-ruby/json/files/json-2.1.0-ruby26-2.patch b/dev-ruby/json/files/json-2.1.0-ruby26-2.patch new file mode 100644 index 00000000000..9f1bff9b691 --- /dev/null +++ b/dev-ruby/json/files/json-2.1.0-ruby26-2.patch @@ -0,0 +1,105 @@ +commit e7da0fc34e8ed7fa250fc38f1109e4944cbad808 +Author: eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> +Date: Fri Aug 3 15:11:36 2018 +0000 + + ext/json/parser/parser.c: do not call rb_str_resize() on Time object + + * See https://github.com/flori/json/issues/342 + + git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e + +diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c +index b5ed093c1f..c8012796a4 100644 +--- a/ext/json/ext/parser/parser.c ++++ b/ext/json/ext/parser/parser.c +@@ -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; +@@ -1830,7 +1832,7 @@ 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}; +@@ -1838,7 +1840,7 @@ enum {JSON_error = 0}; + enum {JSON_en_main = 1}; + + +-#line 742 "parser.rl" ++#line 744 "parser.rl" + + + /* +@@ -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; +@@ -1898,7 +1900,7 @@ st0: + 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;} +@@ -1908,7 +1910,7 @@ st10: + 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; +@@ -1997,7 +1999,7 @@ case 9: + _out: {} + } + +-#line 761 "parser.rl" ++#line 763 "parser.rl" + + if (cs >= JSON_first_final && p == pe) { + return result; +diff --git a/ext/json/parser/parser.rl b/ext/json/parser/parser.rl +index fba01ac0e5..edab32b78f 100644 +--- a/ext/json/ext/parser/parser.rl ++++ b/ext/json/ext/parser/parser.rl +@@ -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; |