From: YANAGAWA Kazuhisa Date: 2003-04-23T21:17:11+09:00 Subject: [ruby-dev:20073] ARGF.read doesn't stop on the end of arguments 例えば ruby -e 'while ARGF.read(size); end' /usr/share/dict/words なんてことをすると,引数に渡したファイルを読み終わった後,そのまま stdin を読みにいってブロックします. どうも argf_read() がどうしても size 分のデータが読みたくて next_argv() を呼び,そこでは rb_argv が空になってるので stdin を読みに いくということになっているようです. 使われてない first_p はきっとこんなことに使うんだろうということでいじっ てみたら多分動いたんですがどうでしょうか. # ARGF.gets はちゃんと止まるんだから,今の挙動は意図したものじゃないと # 思うんですが. -- 柳川和久 @ 東大阪市 . 大阪府 April 23, 2003 It is never late to mend. *** io.c.orig Wed Apr 23 14:12:55 2003 --- io.c Wed Apr 23 14:21:32 2003 *************** *** 2937,2939 **** } ! else { next_p = -1; --- 2937,2939 ---- } ! else if (first_p) { next_p = -1; *************** *** 2941,2942 **** --- 2941,2945 ---- filename = rb_str_new2("-"); + } + else { + return Qfalse; }