今日は eval を使う時の YARV の処理の変更などがありました。
drbrain:r36170 2012-06-22 05:56:23 +0900
ruby_cleanup() の rdoc の typo 修正。 [ruby-core:45755] [Bug #6619]
svn:r36171 2012-06-22 05:56:35 +0900
version.h の日付更新。
nobu:r36172 2012-06-22 12:07:22 +0900
variable.c のインデントの修正。
nobu:r36173 2012-06-22 12:07:26 +0900
process.c の rb_exec_async_signal_safe() の 変数 sargp が fork(2) のない環境では NULL に置換されるマクロとして定義されていたので NULL 初期化されたローカル変数として定義するようにしています。また宣言に const を付けています。
nobu:r36174 2012-06-22 13:32:39 +0900
rb_check_copyable() という API を追加しています。コピー先が freeze されていないかのチェックと、コピー元が tainted/untrusted にマークされていないかをチェックするものです。追加されているだけでとりあえずまだ利用されてはいません。
nobu:r36175 2012-06-22 13:36:54 +0900
Random#marshal_load で先程追加した rb_check_copyable() を使って freeze していないかとコピー元が汚染されていないかをチェックすることで、marshal_load で freezeしたオブジェクトが変更できてしまう不具合に対策しています。 [Bug #6540]
nobu:r36176 2012-06-22 14:22:46 +0900
Marshal.dump で第2引数として IO (のように振る舞うオブジェクト)を要求するためそうでなかったら例外を発生させる処理を関数として切り出して使いまわすようにするリファクタリングをしています。
ko1:r36177 2012-06-22 17:58:29 +0900
バックトレースのテストで再帰する回数を減らしています。
akr:r36178 2012-06-22 18:24:21 +0900
process.c の save_redirect_fd()、run_exec_dup2()、run_exec_open() などは昨日のリファクタリングとは逆に VALUE を受け取っていたのを struct rb_execarg を受け取ってそのメンバの options にアクセスするようにしています。
ko1:r36179 2012-06-22 18:32:56 +0900
rb_thread_t には eval でスクリプト片を実行する時にローカル変数とメソッド(かっこなしの呼び出し)をパーサが区別したり、その他の理由で base_block というメンバに呼び元の rb_block_t をセットしておいて、実行後にクリアするようにしていたのですが、例外が発生した時にこれがクリアされないままになることがあって、その状態で別の RubyVM::InstructionSequence をコンパイルしようとすると SEGV などが発生してしまっていました。そのため base_block を eval でのコンパイルの前後でセット/クリアするようにして、実行する時にはスタックフレームを積む時に base_thread を明示的に引数として渡してセットするようにしています。
kou:r36180 2012-06-22 18:52:32 +0900
README.EXT, README.EXT.ja の Data_Wrap_Struct() の仮引数の名前を定義にそろえています。
akr:r36181 2012-06-22 20:30:29 +0900
Process.exec などのオプションを管理する struct rb_execarg に pgroup_given と pgroup_pgid に :pgroup オプションの情報を格納するようにして、Array のオブジェクトで取り回していたのをやめています。
yugui:r36182 2012-06-22 21:05:11 +0900
common.mk に不足していた依存関係を追加しています。
nobu:r36183 2012-06-22 21:45:08 +0900
Test::Unit の --job-status=replace の時に実行中テストの情報を同じ行の中で表示するためにクリアする処理で @status_line_size というインスタンス変数が未初期化だったら 0 で初期化しておくようにしています。
nobu:r36184 2012-06-22 21:45:12 +0900
make test-all に TESTS 変数で -j を渡して並列実行した時にファイル数ベースでテストのプログレスを表示するようにしています。
nobu:r36185 2012-06-22 22:37:16 +0900
Random の marshal_load で freeze したオブジェクトの書き換えができてしまうという不具合の修正(r36175)のテストに追加して initialize を呼び出した時もチェックするようにしたのでそのテストを追加しています。
nobu:r36186 2012-06-23 00:51:41 +0900
.gdbinit で Ruby のデバッグ用のコマンド rp (VALUE の中身を認識して表示してくれるコマンド)で struct RClass の時に表示する内容を増やしています。
svn:r36187 2012-06-23 00:51:49 +0900
version.h の日付更新。