ruby-reference-manual:1987
From: Kouya <kouyataifu4@g...>
Date: Sat, 27 Feb 2010 23:12:44 +0900
Subject: [ruby-reference-manual:1987] Re: [Bug #2800] IO.new の第2引数デフォルト
kouyaです。 http://redmine.ruby-lang.org/issues/show/2800のリンク先をざっと読んだのですが、 リファレンスにおいて直す要素は、 * 1.8,1.9 のIO.newの第二引数を省略した場合は、そもそも”r” ではないので、リファレンスのバグである。 ** IO.newの第二引数を省略した場合は、C言語レベルでのfcntl関数(もしくはgetfl関数?)が定義されている環境では、 第一引数のfdのモードを継承するが、当該関数が存在しない環境では"r" となる。 * IO.newにおいて、書き込みモードを読み込みモードにするような操作が検出された場合は例外をだす。 といった感じなのかもしれません。 ちなみに、下記スクリプトを実行したら、1.9.1-p0のみ、例外に関する挙動が違うようです。 #ここから、 f1 = File.open("foo.txt", "w"); f1.puts "foo"; f2 = IO.new(f1.fileno, "r"); p f2.gets #ここまで ruby 1.8.1 (2003-12-25) [i686-darwin] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3 ##End Of /Users/kouya/others/ruby-1.8.1/miniruby ruby 1.8.2 (2004-12-25) [i686-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3 ##End Of /Users/kouya/others/ruby-1.8.2/miniruby ruby 1.8.3 (2005-09-21) [i686-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3 ##End Of /Users/kouya/others/ruby-1.8.3/miniruby ruby 1.8.4 (2005-12-24) [i686-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3 ##End Of /Users/kouya/others/ruby-1.8.4/miniruby ruby 1.8.5 (2006-08-25) [i686-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3 ##End Of /Users/kouya/others/ruby-1.8.5/miniruby ruby 1.8.6 (2009-08-04 patchlevel 383) [i686-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3 ##End Of ruby-1.8.6 ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3 ##End Of ruby ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0] ab.rb:4:in `gets': Bad file descriptor (Errno::EBADF) from ab.rb:4:in `<main>' ##End Of ruby-1.9.1 ruby 1.9.2dev (2009-12-05 trunk 26005) [x86_64-darwin10.2.0] ab.rb:3:in `initialize': Invalid argument (Errno::EINVAL) from ab.rb:3:in `new' from ab.rb:3:in `<main>' ##End Of ruby-trunk -- kouya -- ML: ruby-reference-manual@m... 使い方: http://QuickML.com/
1986 2010-02-27 04:02 [redmine@r... ] [Bug #2800] IO.new の第2引数デフォルト -> 1987 2010-02-27 15:12 ┗[kouyataifu4@g... ] 1988 2010-02-27 15:57 ┗[nov@y... ] 1989 2010-02-27 16:44 ┗[kouyataifu4@g... ] 1990 2010-03-01 02:24 ┗[zn@m... ] 1991 2010-03-01 18:49 ┗[nov@y... ] 1992 2010-03-03 04:37 ┣[redmine@r... ] [Bug #2800](Closed) IO.new の第2引数デフォルト 1993 2010-03-03 04:42 ┗[nov@y... ] 1994 2010-03-03 17:34 ┗[kouyataifu4@g... ] 1995 2010-03-05 14:27 ┗[nov@y... ] 1997 2010-03-06 02:28 ┗[kouyataifu4@g... ] 1998 2010-03-06 05:52 ┗[nov@y... ]