Bug #862
closedr20625 default_internal is nil.
Description
=begin
高尾宏治です。
trunk の r20625 以降、コマンドラインオプションで渡した
default_internal が nil になっています。
$ svn up -r20624 && make && ./ruby -Eutf-8:utf-8 -e 'p([Encoding.default_external, Encoding.default_internal])'
[#Encoding:UTF-8, #Encoding:UTF-8]
$ svn up -r20624 && make && ./ruby -Eutf-8:utf-8 -e 'p([Encoding.default_external, Encoding.default_internal])'
[#Encoding:UTF-8, nil]
調べたところ、コマンドラインオプションの default_internal を適切に処理したあとで、
shebang の default_internal を解析します。
そして、shebang に default_internal の指定がなかった場合、
強制的に default_internal に nil を設定しているようです。
r20624 までは、default_internal を再設定できなかったため問題なかったようです。
以下の修正で手元では問題が解決しています。
Index: ruby.c¶
--- ruby.c (revision 20679)
+++ ruby.c (working copy)
@@ -1244,7 +1244,7 @@
enc = rb_enc_from_index(opt->intern.enc.index);
rb_enc_set_default_internal(rb_enc_from_encoding(enc));
}
- else
- else if (!rb_default_internal_encoding())
/* Freeze default_internal */
rb_enc_set_default_internal(Qnil);
=end