summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-03-26 11:14:44 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-03-26 11:14:44 +0000
commite8de850e6d5f9c4d9928753862b4a18147be8983 (patch)
tree21f5334a96e4e7279048d6db4290d831470275c3
parent2d8c3e78516525c2899e6d2a39f9e8cc82b10fc7 (diff)
encoding.c: fix encoding of dynsym
* encoding.c (rb_enc_get_index): the encoding of dynamic symbol comes from fstr. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--encoding.c3
-rw-r--r--test/ruby/test_encoding.rb1
2 files changed, 4 insertions, 0 deletions
diff --git a/encoding.c b/encoding.c
index df3d65cd48..b1afc87bd2 100644
--- a/encoding.c
+++ b/encoding.c
@@ -747,6 +747,9 @@ rb_enc_get_index(VALUE obj)
obj = rb_id2str(SYM2ID(obj));
}
switch (BUILTIN_TYPE(obj)) {
+ case T_SYMBOL:
+ obj = RSYMBOL(obj)->fstr;
+ /* fall through */
as_default:
default:
case T_STRING:
diff --git a/test/ruby/test_encoding.rb b/test/ruby/test_encoding.rb
index 9a780a64c5..e3b15eb277 100644
--- a/test/ruby/test_encoding.rb
+++ b/test/ruby/test_encoding.rb
@@ -110,6 +110,7 @@ class TestEncoding < Test::Unit::TestCase
bin = "\xff".force_encoding(Encoding::ASCII_8BIT).to_sym
asc = "b".force_encoding(Encoding::ASCII_8BIT)
assert_equal(Encoding::ASCII_8BIT, Encoding.compatible?(bin, asc))
+ assert_equal(Encoding::UTF_8, Encoding.compatible?("\u{3042}".to_sym, ua.to_sym))
end
def test_errinfo_after_autoload