summaryrefslogtreecommitdiff
path: root/transcode.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-25 08:54:51 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-25 08:54:51 +0000
commitd42b3e5c8875939208b3dfd0145447d15eba21b5 (patch)
treeb1f1e74bafdcd52f5f9d18c15d75992b03ed3435 /transcode.c
parentea6ac1c45bf11cfdd3f6b058776d063468215980 (diff)
* 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.c27
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++)