ruby-trunk-changes r32587 - r32598

akr:r32587 2011-07-20 22:26:10 +0900

r32579 で追加した rb_update_max_fd() を ruby/intern.h で宣言して拡張ライブラリなどで open/dup/socket などで新たに file descriptor を作ったらこれを読んで最大値を更新するようにしています。

kazu:r32588 2011-07-21 00:00:00 +0900

rb_update_max_fd() で関数マクロからもってきたので引数に不要なかっこがついていたのをはずしています。

svn:r32589 2011-07-21 00:00:06 +0900

version.h の日付更新。

naruse:r32590 2011-07-21 00:20:14 +0900

r32586 の修正についてのテストを追加しています。またコメントで詳しい原因について触れられています。
それによると、FreeBSD (7.2 から 7.2 となってるのは typo?)では getaddrinfo(3) から nsdispatch(3) が呼ばれていて、nsdispatch(3) が _nss_cache_cycle_prevention_function を呼ぶために dlsym(3) を使った後に dlerror(3) を呼んでいないのでエラー情報が残ってしまっていた、ということのようです。 [ruby-dev:44091] [Bug #5021]

naruse:r32593 2011-07-21 17:27:08 +0900

WEBrick が異常なリクエスト(ヘッダが正常に読めてない)を受信した時に NoMethodError 例外が発生してしまっていたのを修正しています。 [ruby-core:38040] [Bug #5022]

naruse:r32594 2011-07-21 17:31:44 +0900

Array#delete_at の rdoc 用コメントのサンプルコードの変更です。 %w{} 記法じゃなくて配列リテラルを使うようにしています。 [ruby-core:38310] [Bug #5066]

naruse:r32595 2011-07-21 18:12:36 +0900

Enumerable#inject, reduce の rdoc 用コメントの修正です。サンプルコード内の空行を削っています。コミットログを読むと rdoc はサンプルコードで異なるメソッドが連続した行に書かれていると alias として認識するようですね。へー。

mame:r32596 2011-07-21 19:35:52 +0900

Rubyスクリプトを parse して作った AST をデバッグのために dump する時に NODE_ARGS_AUX というノードで表示するコメントに追記しています。 m とか p とかいう引数(?)がそれぞれメソッド定義時の rest 引数(* つきで配列に格納する引数)の前と後の仮引数への値の格納を意味していることをコメントしています。

mame:r32597 2011-07-21 20:09:52 +0900

callcc で作った Continuation を呼ぶと set_trace_func で設定した trace_func が呼ばれなくなってしまう問題の対策として set_trace_func に nil が渡された時に明示的に th->tracing を EVENT_RUNNING_NOTHING にリセットするようにしています。 [ruby-core:34998] [Feature #4347]

akr:r32598 2011-07-21 21:02:45 +0900

r32587 の rb_update_max_fd() 呼び出し追加で UNIXSocket での file descriptor passing の時に不正は fd を渡してしまうために max_file_descriptor がとても大きな値になって exec する時にとても時間がかかってしまうので、fstat() を使って有効な file descriptor かチェックするようにしています。おそらく Mac OX X での recvmsg() の不具合なのでしょうけど、darwinソースコードを読まないといけないかも。さてどこにあるんだったっけ。