ruby-trunk-changes r34384 - r34390

今日は Windows 版での $stdin.read が Ctrl-C で割り込まれない不具合修正などがありました。

nobu:r34384 2012-01-28 05:53:37 +0900

lib/irb/completion.rb の irb 補完時に Class#name が String を返さず Regexp#=~ で例外が発生した時にそのまま処理をエラーにしてしまっていたので捕捉するようにしています。 [ruby-core:42244][Bug #5938]

svn:r34385 2012-01-28 05:53:42 +0900

version.h の日付更新。

shirosaki:r34387 2012-01-28 09:51:33 +0900

Windows 版のために Zlib::GzipReader.wrap を使ったテストでファイルに明示的に binmode を指定するようにしています。 [ruby-dev:45149] [Bug #5812]

shirosaki:r34388 2012-01-28 09:51:36 +0900

thread_win32.c で現在のスレッドの rb_thread_t を取得するのに GET_THREAD() を利用するかわりに ruby_thread_from_native() で実際に現在のスレッドのスレッドローカルストレージから取得するようにしています。 [ruby-dev:45149] [Bug #5812]
GET_THREAD() が現在のスレッドを返さないことがあるということなのですが posix 版にはその問題はないのでしょうか。

shirosaki:r34389 2012-01-28 09:51:40 +0900

Windows 版で SIGINT のシグナル送信処理をエミュレートしている実装で、CTRL_C_EVENT というシグナル? を利用していましたが、対象がプロセスグループの場合は CTRL_C_EVENT が利用できないため CTRL_BREAK_EVENT を利用するようにしています。 また子プロセスを生成する時に CREATE_NEW_PROCESS_GROUP というフラグを追加しています。 [ruby-dev:45149] [Bug #5812]

shirosaki:r34390 2012-01-28 09:51:43 +0900

Windows 版の $stdin.read で ReadFile() でエラーが発生した時に GetLastError() でエラー内容を取得して、ERROR_OPERATION_ABORTED だったら抜けるようにすることで $stdin.read が Ctrl-C で止まらないのを修正しています。 [ruby-dev:45149] [Bug #5812]