[#46689] [IMPORTANT] 2.0.0 release plan — Yusuke Endoh <mame@...>
ALL COMMITTERS SHOULD READ THIS MAIL! コミッタはこのメール読んで!
5 messages
2012/12/02
[#46707] [ruby-trunk - Feature #7510][Open] irb --help が古い — "sho-h (Sho Hashimoto)" <sho-h@...>
6 messages
2012/12/04
[#46710] [ruby-trunk - Bug #7520][Assigned] irb/completion でインスタンス変数がチェックされていない — "tarui (Masaya Tarui)" <tarui@...>
4 messages
2012/12/05
[#46747] [ruby-trunk - Bug #7572][Open] クラス定義においてスーパークラスとしてクラスでないものを指定してもエラーにならない事がある — "tadf (tadayoshi funaba)" <redmine@...>
6 messages
2012/12/16
[#46750] [ruby-trunk - Bug #7575][Open] Struct のメンバーをアクセサで参照できない事がある — "tadf (tadayoshi funaba)" <redmine@...>
4 messages
2012/12/16
[#46766] [ruby-trunk - Bug #7590][Open] parallel test-all で test_settracefunc が cfp consistency error — "tarui (Masaya Tarui)" <tarui@...>
5 messages
2012/12/19
[#46797] [ruby-trunk - Bug #7603][Open] app_factorial と so_ackermann が動かない — "authorNari (Narihiro Nakamura)" <authorNari@...>
5 messages
2012/12/22
[#46798] Re: [ruby-dev:46797] [ruby-trunk - Bug #7603][Open] app_factorial と so_ackermann が動かない
— SASADA Koichi <ko1@...>
2012/12/22
あれぇ,以前よりも増やしたつもりだったんだけど....
[#46807] [ruby-trunk - Bug #7625][Open] Arrayを継承したオブジェクトのcompactがArrayを返す — "mogya@... (Daisuke Furukawa)" <mogya@...>
19 messages
2012/12/26
[#46813] backport93からの移動 [Re: [ruby-core:51175] [Backport93 - Backport #7632] IRB autocompletion bug] — keiju@... (keiju ISHITSUKA)
けいじゅ@いしつかです.
3 messages
2012/12/29
[ruby-dev:46720] [ruby-trunk - Bug #4281] irb don't start up when Encoding.defalut_internal isn't 'utf-8'
From:
"naruse (Yui NARUSE)" <naruse@...>
Date:
2012-12-10 01:00:38 UTC
List:
ruby-dev #46720
Issue #4281 has been updated by naruse (Yui NARUSE).
Assignee changed from keiju (Keiju Ishitsuka) to authorNari (Narihiro Nakamura)
mame (Yusuke Endoh) wrote:
> Yugui さんからもいしつかさんからも反応がない。
> 誰でもいいので、パッチを試してみて、問題無さそうならコミットして、様子をみてくれるコミッタはいませんか。
nari さんコミットしてください
----------------------------------------
Bug #4281: irb don't start up when Encoding.defalut_internal isn't 'utf-8'
https://bugs.ruby-lang.org/issues/4281#change-34571
Author: authorNari (Narihiro Nakamura)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: lib
Target version: 2.0.0
ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
=begin
nariです。
以下のようにすると irb が起動しません。
$ ruby -S -E cp932:cp932 irb
/home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:135:in `eval': /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: invalid multibyte char (UTF-8) (SyntaxError)
/home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: invalid multibyte char (UTF-8)
/home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb:16: syntax error, unexpected $end, expecting keyword_end
def_exception :UnrecognizedSwitch, 'スイッチ(%s)が分りません'
^
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:135:in `real_load'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:125:in `block in load'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:123:in `each'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/locale.rb:123:in `load'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/init.rb:122:in `init_error'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/init.rb:17:in `setup'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb.rb:53:in `start'
from /home/nari/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `<main>'
再現コードは以下です。
$ cat /tmp/t.rb
require "irb"
Encoding.default_internal = "cp932"
Encoding.default_external = "cp932"
# pathはRubyのインストール先に合わせて変えてください
path = "/home/nari/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/lc/ja/error.rb"
src = IRB::MagicFile.open(path){|f| f.read}
p src
eval(src)
$ ruby /tmp/t.rb
#<Encoding:Windows-31J>
/tmp/t.rb:8:in `eval': (eval):16: invalid multibyte char (UTF-8) (SyntaxError)
(eval):16: invalid multibyte char (UTF-8)
(eval):16: syntax error, unexpected $end, expecting keyword_end
def_exception :UnrecognizedSwitch, 'スイッチ(%s)が分りません'
^
from /tmp/t.rb:8:in `<main>'
cp932に変換された文字列(src)の中に、utf-8を指定するマジックコメントが入っ
ており、utf-8の文字列としてeval()されるのが原因のようです。
Encoding.default_internalが指定されるようなケースまで標準ライブラリが対
応する必要はないのかもしれませんが、情報共有の意味も込めて報告しておき
ます。
この問題については以下のパッチで直ることを確認しています。
diff --git a/lib/irb/magic-file.rb b/lib/irb/magic-file.rb
index 8612620..339ed60 100644
--- a/lib/irb/magic-file.rb
+++ b/lib/irb/magic-file.rb
@@ -8,9 +8,10 @@ module IRB
line = io.gets
line = io.gets if line[0,2] == "#!"
encoding = detect_encoding(line)
+ internal_encoding = encoding
encoding ||= default_src_encoding
io.rewind
- io.set_encoding(encoding, nil)
+ io.set_encoding(encoding, internal_encoding)
if block_given?
begin
=end
--
http://bugs.ruby-lang.org/