Bug #6566 ยป bug-6566.diff
| w/ext/json/generator/generator.c | ||
|---|---|---|
|
i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only,
|
||
|
i_quirks_mode, i_pack, i_unpack, i_create_id, i_extend, i_key_p,
|
||
|
i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth,
|
||
|
i_buffer_initial_length, i_dup;
|
||
|
i_buffer_initial_length, i_dup, i_valid_encoding_p;
|
||
|
/*
|
||
|
* Copyright 2001-2004 Unicode, Inc.
|
||
| ... | ... | |
|
static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
|
||
|
{
|
||
|
int ascii = state->ascii_only;
|
||
|
fbuffer_append_char(buffer, '"');
|
||
|
#ifdef HAVE_RUBY_ENCODING_H
|
||
|
obj = rb_funcall(obj, i_encode, 1, CEncoding_UTF_8);
|
||
|
if (!ascii && !RTEST(rb_funcall(obj, i_valid_encoding_p, 0, 0))) ascii = 1;
|
||
|
#endif
|
||
|
if (state->ascii_only) {
|
||
|
if (ascii) {
|
||
|
convert_UTF8_to_JSON_ASCII(buffer, obj);
|
||
|
} else {
|
||
|
convert_UTF8_to_JSON(buffer, obj);
|
||
| ... | ... | |
|
CEncoding_UTF_8 = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-8"));
|
||
|
i_encoding = rb_intern("encoding");
|
||
|
i_encode = rb_intern("encode");
|
||
|
i_valid_encoding_p = rb_intern("valid_encoding?");
|
||
|
#endif
|
||
|
i_SAFE_STATE_PROTOTYPE = rb_intern("SAFE_STATE_PROTOTYPE");
|
||
|
CJSON_SAFE_STATE_PROTOTYPE = Qnil;
|
||