From: _ wanabe Date: 2010-03-31T13:15:11+09:00 Subject: [ruby-dev:40870] [Feature #2674] RubyVM::InstructionSequence to accept IOs チケット #2674 が更新されました。 (by _ wanabe) ありがとうございます。 NG なケースを見つけてしまったので報告します。これで SEGV します。 a = [nil] def a.gets raise end RubyVM::InstructionSequence.compile(a) 中を見ると、lex_io_gets から最終的に rb_io_getline_1 を呼び出して GetOpenFile で RFILE() を使っているようですので、 src が T_FILE かどうかで判断するのがいいのではないかと思います。 あるいは rb_parser_compile_file 内部で、file が T_FILE かどうかで lex_gets を変える(rb_io_gets を呼ぶか rb_funcall 経由で gets するか) というのも考えましたが、ちょっと影響範囲がわかりませんでした。 ---------------------------------------- http://redmine.ruby-lang.org/issues/show/2674 ---------------------------------------- http://redmine.ruby-lang.org