summaryrefslogtreecommitdiff
path: root/ext/json/parser/parser.rl
diff options
context:
space:
mode:
-rw-r--r--ext/json/parser/parser.rl19
1 files changed, 9 insertions, 10 deletions
@@ -87,14 +87,14 @@ static void raise_parse_error(const char *format, const char *start)
rb_enc_raise(rb_utf8_encoding(), rb_path2class("JSON::ParserError"), format, ptr);
}
-static VALUE mJSON, mExt, cParser, eNestingError;
static VALUE CNaN, CInfinity, CMinusInfinity;
static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions,
i_chr, i_max_nesting, i_allow_nan, i_symbolize_names,
i_object_class, i_array_class, i_decimal_class,
i_deep_const_get, i_match, i_match_string, i_aset, i_aref,
- i_leftshift, i_new, i_try_convert, i_freeze, i_uminus;
static int binary_encindex;
static int utf8_encindex;
@@ -692,16 +692,11 @@ static VALUE convert_encoding(VALUE source)
}
if (encindex == binary_encindex) {
- // For historical reason, we silently reinterpret binary strings as UTF-8 if it would work.
- VALUE utf8_string = rb_enc_associate_index(rb_str_dup(source), utf8_encindex);
- switch (rb_enc_str_coderange(utf8_string)) {
- case ENC_CODERANGE_7BIT:
- case ENC_CODERANGE_VALID:
- return utf8_string;
- }
}
- return rb_str_conv_enc(source, rb_enc_from_index(encindex), rb_utf8_encoding());
}
/*
@@ -974,6 +969,9 @@ void Init_parser(void)
CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity"));
rb_gc_register_mark_object(CMinusInfinity);
i_json_creatable_p = rb_intern("json_creatable?");
i_json_create = rb_intern("json_create");
i_create_id = rb_intern("create_id");
@@ -995,6 +993,7 @@ void Init_parser(void)
i_try_convert = rb_intern("try_convert");
i_freeze = rb_intern("freeze");
i_uminus = rb_intern("-@");
binary_encindex = rb_ascii8bit_encindex();
utf8_encindex = rb_utf8_encindex();