[前][次][番号順一覧][スレッド一覧]

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...            ]