ruby-trunk-changes r31268 - r31271

今日は IO#close で別の Thread に IOError を投げる処理がうまく例外を投げられていなかった不具合の修正をしています。

kazu:r31268 2011-04-13 20:22:34 +0900

rb_io_fdatasync() の不要になった一時変数を削除しています。

svn:r31269 2011-04-13 20:22:38 +0900

version.h の日付更新。

nagachika:r31270 2011-04-14 00:43:13 +0900

r30852 で IO#close するとその IO オブジェクトについて操作中(read とか)の Thread に IOError 例外が飛ぶようにしていましたが、実はちゃんと例外が飛んでいなくて、なのに終了後に Thread#join すると例外が発生するようになっていました。別の Thread へ例外を投げる時は rb_thread_t::thrown_errinfo に例外をセットしないといけないのでそこを修正しています。なお Linux だと read() が -1 を返すので、改めて fd のチェックをして別途 IOError が発生するのでちょっと見た目はちゃんと例外が発生するようになっていましたが、Mac OS X では read() が 0 で返ってくるためそのまま処理が続行していました(しかしその Thread を join すると IOError が発生する)。

svn:r31271 2011-04-14 00:43:17 +0900

version.h の日付更新。