diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-25 08:54:51 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-25 08:54:51 +0000 |
commit | d42b3e5c8875939208b3dfd0145447d15eba21b5 (patch) | |
tree | b1f1e74bafdcd52f5f9d18c15d75992b03ed3435 /transcode.c | |
parent | ea6ac1c45bf11cfdd3f6b058776d063468215980 (diff) | |
download | ruby-d42b3e5c8875939208b3dfd0145447d15eba21b5.tar.gz |
* transcode.c (decorate_convpath): show type of escaping for
xml_attr_quote or some conversions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r-- | transcode.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/transcode.c b/transcode.c index f40666535b..7b8c6dbd58 100644 --- a/transcode.c +++ b/transcode.c @@ -2772,17 +2772,22 @@ decorate_convpath(VALUE convpath, int ecflags) len = n = RARRAY_LEN(convpath); if (n != 0) { VALUE pair = RARRAY_PTR(convpath)[n-1]; - const char *sname = rb_enc_name(rb_to_encoding(RARRAY_PTR(pair)[0])); - const char *dname = rb_enc_name(rb_to_encoding(RARRAY_PTR(pair)[1])); - transcoder_entry_t *entry = get_transcoder_entry(sname, dname); - const rb_transcoder *tr = load_transcoder_entry(entry); - if (!tr) - return -1; - if (!DECORATOR_P(tr->src_encoding, tr->dst_encoding) && - tr->asciicompat_type == asciicompat_encoder) { - n--; - rb_ary_store(convpath, len + num_decorators - 1, pair); - } + if (TYPE(pair) == T_ARRAY) { + const char *sname = rb_enc_name(rb_to_encoding(RARRAY_PTR(pair)[0])); + const char *dname = rb_enc_name(rb_to_encoding(RARRAY_PTR(pair)[1])); + transcoder_entry_t *entry = get_transcoder_entry(sname, dname); + const rb_transcoder *tr = load_transcoder_entry(entry); + if (!tr) + return -1; + if (!DECORATOR_P(tr->src_encoding, tr->dst_encoding) && + tr->asciicompat_type == asciicompat_encoder) { + n--; + rb_ary_store(convpath, len + num_decorators - 1, pair); + } + } + else { + rb_ary_store(convpath, len + num_decorators - 1, pair); + } } for (i = 0; i < num_decorators; i++) |