From d8644f632b5678ca28d1b681e0e2f1109cad185e Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 18 Jan 2008 01:30:41 +0000 Subject: * encoding.c (rb_enc_aliases_enc_i): exclude non alias names from Encoding.aliases. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 3 +++ encoding.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 16c16d27f7..ce207099c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,9 @@ Fri Jan 18 09:22:07 2008 Yukihiro Matsumoto * parse.y (ripper_initialize): move parser->enc initialization. + * encoding.c (rb_enc_aliases_enc_i): exclude non alias names from + Encoding.aliases. + Fri Jan 18 07:06:25 2008 Yukihiro Matsumoto * io.c (Init_IO): stdin/stdout may not be duplex. diff --git a/encoding.c b/encoding.c index 38d2cf2c90..07a1f8bfc9 100644 --- a/encoding.c +++ b/encoding.c @@ -498,8 +498,7 @@ rb_enc_find_index(const char *name) } else { i = load_encoding(name); - enc = rb_enc_from_index(i); - if (!enc->precise_mbc_enc_len) { + if (enc_autoload_p(rb_enc_from_index(i))) { rb_warn("failed to load encoding (%s); use ASCII-8BIT instead", name); return 0; @@ -1149,11 +1148,16 @@ rb_enc_aliases_enc_i(st_data_t name, st_data_t orig, st_data_t arg) VALUE str = rb_ary_entry(ary, idx); if (NIL_P(str)) { - str = rb_str_new2(rb_enc_name(rb_enc_from_index(idx))); + rb_encoding *enc = rb_enc_from_index(idx); + + if (STRCASECMP((char*)name, rb_enc_name(enc)) == 0) { + return ST_CONTINUE; + } + str = rb_str_new2(rb_enc_name(enc)); rb_ary_store(ary, idx, str); } rb_hash_aset(aliases, rb_str_new2((char *)name), str); - return 0; + return ST_CONTINUE; } /* -- cgit v1.2.3