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;
|