ruby-trunk-changes r35956 - r35969

今日も Process の fork/exec/spawn あたりの修正がありました。

usa:r35956 2012-06-08 10:40:08 +0900

thread_win32.c のマシンスタックサイズについてのコメントにコミットサイズ(Windows のメモリ管理のなにか。よくは知りません)について言及を追加しています。

svn:r35957 2012-06-08 10:40:13 +0900

version.h の日付更新。

nobu:r35958 2012-06-08 11:25:55 +0900

r35955 で rb_fork_err() が rb_protect() を使うのが status 引数を渡した時だけになったので 拡張ライブラリ pty で rb_fork_err() を呼んでいるところで status を渡すようにしています。

nobu:r35959 2012-06-08 11:26:39 +0900

さらに pty で status にエラーが帰ってきたら rb_jump_tag() で再発生させるようにしています。

nobu:r35960 2012-06-08 12:04:42 +0900

同じく rb_fork_err() での rb_protect() での例外などの処理で、Process.fork で子プロセスから例外が通知された場合はそちらの方を親プロセスでの例外より優先して処理させるようにしています。

nobu:r35961 2012-06-08 16:19:38 +0900

TestGem#test_self_find_files というテストがソースディレクトリのパスのどこかにシンボリックリンクがあると失敗することがあるのでテストを走らせる時のソースディレクトリ名の解決を realpath を使って本当のパス名を指定して走らせるようにしています。

akr:r35962 2012-06-08 19:02:00 +0900

process.c で不要になった関数マクロを削除しています。

akr:r35963 2012-06-08 19:57:10 +0900

process.c で after_exec() という exec系(2) の後に呼ぶ関数が proc_exec_cmd() と r_exec_sh() に存在していたので eb_exec_err() と rb_proc_exec() に中にまとめています。

akr:r35964 2012-06-08 22:43:48 +0900

r35955 の rb_fork_err() が rb_protect() を使うかどうかの判定を revert しています。 ep[0], ep[1] を閉じるために !chfunc の条件も必要だったとのことです。
pty の変更もこれに追随して戻すことになるんでしょうか。

akr:r35965 2012-06-08 22:50:38 +0900

r35964 の rb_protect() を使う条件についてコメント理由を追記しています。

akr:r35966 2012-06-08 23:46:23 +0900

FD_CLOEXEC の存在チェックをして条件コンパイルするのをやめています。fork(2) がある環境なら FD_CLOEXEC はあるからとのこと。

akr:r35967 2012-06-09 01:13:26 +0900

rb_exec_arg_init() の戻り値を void から VALUE に変更して、引数を解析した結果のコマンド名またはシェルに渡すスクリプトの文字列を返すようにしています。おそこらくこれを使う修正がこの先入るのでしょう。

svn:r35968 2012-06-09 01:13:32 +0900

version.h の日付更新。

akr:r35969 2012-06-09 01:26:01 +0900

process.c で before_exec() の呼び出しも proc_exec_cmd() と proc_exec_sh() に別々に存在していたのを呼び元にまとめています。また rb_exec_err() で after_exec() を呼ばないエラー時のパスがあったので修正しています。