ruby-trunk-changes r33515 - r33520

今日は IO.copy_stream の不具合修正、Solaris での不具合修正などがありました。

akr:r33515 2011-10-24 08:19:14 +0900

IO.copy_stream に渡す入力側のオブジェクトの read メソッドが第2引数に渡されたバッファの文字列を空文字列にせずに nil を返すことで EOF を示した場合に EOF を検出せず繰り返し読もうとしてしまう不具合を修正しています。 [ruby-core:39134] [Bug #5237]

svn:r33516 2011-10-24 08:19:21 +0900

version.h の日付更新。

naruse:r33517 2011-10-24 15:41:57 +0900

FreeBSD 9 で rubygems の拡張ライブラリビルド機能のテストで、configure がない時の(shell の?)エラーメッセージが変化しているためテストが失敗していたので、エラーメッセージのチェック内容を変更しています。

akr:r33518 2011-10-24 20:08:52 +0900

Open3.pipeline_start の rdoc の加筆。

akr:r33519 2011-10-24 22:40:13 +0900

r33507 でファイルディスクリプタにはデフォルトで FD_CLOEXEC をセットするようにしたところ Solaris では grantpt(3) が内部でヘルパープログラムを起動するため、対象の fd に CLOEXEC がセットされているとヘルパープログラムでその fd が閉じられてしまってエラーになるそうです。そのため Solaris では rb_fd_set_cloexec() の呼び出しを grantpt の後にずらすようにしています。 [ruby-dev:44688] [Bug #5475]
rb_fd_set_cloexec() の部分だけ #ifdef で囲んでもいいような気がするのですが posix_openpt() から grantpt() までの一連の関数呼び出しを #ifdef .. #else で分けているのはなぜだろう。 [追記] すみません、これはわたしの読み間違いです。 rb_fd_cloexec() の呼び出しを消してるんじゃなくて位置をずらしているんですね。[/追記]

akr:r33520 2011-10-24 22:49:58 +0900

r33520 のチケットにあるように Solaris を検出するには __sun というマクロをチェックするのが better ということなので defined(sun) とチェックしているところを defined(__sun) に置き換えています。 [ruby-dev:44693]