summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-25 09:58:27 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-25 09:58:27 +0000
commitaa3f56638e7a9b1b518d6b72bcd5104feb484f98 (patch)
tree2d0753389ad1e48c5092ee92f662d9c7afca5311
parentdbd5b8c534cda863c62d39858d57f738f4332c52 (diff)
downloadruby-aa3f56638e7a9b1b518d6b72bcd5104feb484f98.tar.gz
ruby-aa3f56638e7a9b1b518d6b72bcd5104feb484f98.tar.xz
ruby-aa3f56638e7a9b1b518d6b72bcd5104feb484f98.zip
merges r20991 from trunk into ruby_1_9_1.
* transcode.c (decorate_convpath): show type of escaping for xml_attr_quote or some conversions. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1@21042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--transcode.c27
2 files changed, 21 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 1f6b1b5ef..1ab174024 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Dec 25 17:49:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (decorate_convpath): show type of escaping for
+ xml_attr_quote or some conversions.
+
Thu Dec 25 17:06:13 2008 Tanaka Akira <akr@fsij.org>
* io.c (rb_io_initialize): check fd validity. [ruby-dev:36646]
diff --git a/transcode.c b/transcode.c
index f40666535..7b8c6dbd5 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++)