ミムラです。

返信、大変遅くなりましたが、対応ありがとうございます。

最新版で確認したところ、最後のgetsの結果がnilではなくなったのですが、
以下のように1.8のころとは挙動が変わっています。

% cat test.rb
f1 = File.open "file1.txt"
f2 = File.open "file2.txt"
f1.reopen f2
puts f1.gets
puts f1.gets
puts(f1.reopen(f2).gets)
% ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9]
% ruby test.rb
Line 1
Line 2
Line 1
% ruby -v
ruby 1.9.2dev (2009-10-17 trunk 25387) [i386-darwin9.8.0]
% ruby test.rb
Line 1
Line 2
Line 3

io.cのio_reopen.cを見るとreopenする対象が自身と等しければ、
自身をそのまま返しているので、これが正しそうに見えます。
1.8のころもio_reopen.cでは同じ処理を行なっているみたいですが、
挙動が変わるのはどうしてなのでしょうか?

以上、よろしくお願いいたします。

2009年10月15日15:28 Nobuyoshi Nakada <nobu / ruby-lang.org>:
> なかだです。
>
> At Tue, 13 Oct 2009 22:32:14 +0900,
> takkanm / gmail.com wrote in [ruby-dev:39479]:
>> 1.8 と 1.9 で、一度IO::reopenしたファイルに対して、同一ファイルで
>> IO::reopenしたときの挙動が異なるのですが、これは意図したものでしょうか?
>>
>> 1.8 で再reopenした後 gets を行なうと先頭行が読みこまれるのですが、
>> 1.9 では nil が返ってきます。
>
> バグでしょう。直しました。
>
> --
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
>    中田 伸悦
>
>