encoding.c: drop dummy encoding flag

* encoding.c (enc_autoload): drop dummy encoding flag from
  the loaded encoding index.  this flag is used only in this
  source.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-07-15 07:55:08 +00:00
Родитель e262b29ed0
Коммит 28c42b4c25
4 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Wed Jul 15 16:55:04 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* encoding.c (enc_autoload): drop dummy encoding flag from
the loaded encoding index. this flag is used only in this
source.
Wed Jul 15 14:39:29 2015 Koichi Sasada <ko1@atdot.net>
* vm.c (vm_make_env_each): add comments about env layout.

Просмотреть файл

@ -677,6 +677,7 @@ enc_autoload(rb_encoding *enc)
i = enc->ruby_encoding_index;
enc_register_at(i & ENC_INDEX_MASK, rb_enc_name(enc), base);
((rb_raw_encoding *)enc)->ruby_encoding_index = i;
i &= ENC_INDEX_MASK;
}
else {
i = load_encoding(rb_enc_name(enc));

Просмотреть файл

@ -7,8 +7,16 @@ bug_str_enc_associate(VALUE str, VALUE enc)
return rb_enc_associate(str, rb_to_encoding(enc));
}
VALUE
bug_str_encoding_index(VALUE self, VALUE str)
{
int idx = rb_enc_get_index(str);
return INT2NUM(idx);
}
void
Init_enc_associate(VALUE klass)
{
rb_define_method(klass, "associate_encoding!", bug_str_enc_associate, 1);
rb_define_singleton_method(klass, "encoding_index", bug_str_encoding_index, 1);
}

Просмотреть файл

@ -9,4 +9,15 @@ class Test_StrEncAssociate < Test::Unit::TestCase
assert_raise(RuntimeError) {s.associate_encoding!(Encoding::US_ASCII)}
assert_raise(RuntimeError) {s.associate_encoding!(Encoding::UTF_8)}
end
Encoding.list.select(&:dummy?).each do |enc|
enc = enc.name.tr('-', '_')
define_method("test_dummy_encoding_index_#{enc}") do
assert_separately(["-r-test-/string", "-", enc], <<-"end;") #do
enc = Encoding.const_get(ARGV[0])
index = Bug::String.encoding_index(enc)
assert(index < 0xffff, "<%#x> expected but was\n<%#x>" % [index & 0xffff, index])
end;
end
end
end