aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-18 01:30:41 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-18 01:30:41 +0000
commitd8644f632b5678ca28d1b681e0e2f1109cad185e (patch)
tree37234ff1b6f16920b51acfa630af5cc702045658
parenta7e37747011a3eecaf2a29c3ec26ddf17967d47c (diff)
downloadruby-d8644f632b5678ca28d1b681e0e2f1109cad185e.tar.gz
* 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
-rw-r--r--ChangeLog3
-rw-r--r--encoding.c12
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 <matz@ruby-lang.org>
* 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 <matz@ruby-lang.org>
* 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;
}
/*