From: Nobuyoshi Nakada Date: 2009-04-18T13:02:56+09:00 Subject: [ruby-dev:38313] Re: $LOADED_FEATURES.map(&:encoding) なかだです。 At Fri, 17 Apr 2009 20:29:45 +0900, Kazuhiro NISHIYAMA wrote in [ruby-dev:38312]: > $LOADED_FEATURES に入っている文字列の encoding に > ASCII-8BIT と US-ASCII と locale encoding(?) が > 混ざっているのは意図した挙動でしょうか? とくに意図したものではないと思いますが… > [["enumerator.so", #], これはenumerator.c内部でrb_provide()で登録しているのですが、 rb_provide()はエンコーディングを考慮していないためです。 > ["/home/kazu/opt/ruby-trunk/lib/ruby-trunk/1.9.1/rubygems.rb", > #], こちらはgem_prelude.rbで追加しているので、埋め込まれたソースのエ ンコーディングを引き継いでいます。 US-ASCIIに統一するのならこんな感じで。 Index: load.c =================================================================== --- load.c (revision 23198) +++ load.c (working copy) @@ -248,5 +248,5 @@ void rb_provide(const char *feature) { - rb_provide_feature(rb_str_new2(feature)); + rb_provide_feature(rb_usascii_str_new2(feature)); } Index: tool/compile_prelude.rb =================================================================== --- tool/compile_prelude.rb (revision 23198) +++ tool/compile_prelude.rb (working copy) @@ -78,6 +78,6 @@ Init_<%=init_name%>(void) % lines_list.each_with_index {|(setup_lines, lines), i| rb_iseq_eval(rb_iseq_compile( - rb_str_new(prelude_code<%=i%>, sizeof(prelude_code<%=i%>) - 1), - rb_str_new(prelude_name<%=i%>, sizeof(prelude_name<%=i%>) - 1), + rb_usascii_str_new(prelude_code<%=i%>, sizeof(prelude_code<%=i%>) - 1), + rb_usascii_str_new(prelude_name<%=i%>, sizeof(prelude_name<%=i%>) - 1), INT2FIX(<%=1-setup_lines.length%>))); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦