そう言えば
うちの環境*1で
binmodeじゃないまま改行がLFのファイルを開いて何度もIO#tell呼んだら
落ちた。
具体的にはこんな感じ。
buf = [] File.open('example.txt') do |f| buf.push f.tell f.each do |line| buf.push f.tell end end p buf
これでeachの中で落ちる。
ActivePerlでも似たようなことは起きて、落ちはしなかったけど
tell()がマイナス値を返してくれやがっていたのである。
Rubyのio.cのrb_io_tell()読んだらそのマイナス値が原因っぽいな。
どっちもbinmodeにしたら滞りなく動くんだが…