ruby-trunk-changes r33674 - r33687

今日は Psych による一部のオブジェクトの YAML エンコードの変更、Fiber の不具合修正/仕様変更、Windows 環境での File.utime が SEGV する不具合の修正などがありました。

nobu:r33674 2011-11-08 23:26:51 +0900

拡張ライブラリの型チェック(オーバフロー等)の強化、警告除去。

naruse:r33675 2011-11-08 23:31:56 +0900

addr2line.c で PATH_MAX というマクロが未定義だった場合(GNU/Hurd で未定義らしい)の定義を追加しています。 [ruby-core:40840]

nobu:r33676 2011-11-08 23:34:39 +0900

拡張ライブラリ dbm と gdbm でも型の修正とオーバフロー対策をしています。また内部で一時利用するバッファ用の配列を ObjectSpace から隠すようにしています(rb_ary_new() から rb_ary_tmp_new() に変更)。あと DBM#delete_if や GDBM#delete_if でブロックに渡すパラメータの key を freeze しておくようにしています。ちょっとした非互換。 内部的に保持している String オブジェクトを freeze していますが、ブロックパラメータに渡すのは複製なので表に見える部分には変化はありませんでした。コメント欄参照。

naruse:r33677 2011-11-09 02:13:03 +0900

公開 API rb_wait_for_single_fd のテストで FreeBSD では止まってしまうので skip するようにしています。 [ruby-dev:44726] [Bug #5524]

svn:r33678 2011-11-09 02:13:07 +0900

version.h の日付更新。

tenderlove:r33679 2011-11-09 04:54:44 +0900

コードの詳細についてはよく理解できていませんが、Psych で Range, Complex, Rational などのオブジェクトを dump する時に object_id によるタグつきで dump して、同一のオブジェクトは参照として dump するようにしています。

nobu:r33680 2011-11-09 10:32:12 +0900

新規追加ファイルの svn:property 追加

nobu:r33681 2011-11-09 10:32:25 +0900

configure で test(1) の -e を使っているところが Solaris 10 では動かないということで、test -f に変更しています。 [ruby-core:40841] [Bug #5594]

naruse:r33682 2011-11-09 11:06:49 +0900

struct timeval のメンバ tv_sec への代入の型を time_t に修正しています。
tv_sec の型については過去にも調べたような記憶が。r30973 およびコメント欄より、POSIX.1-2001 と IEEE Std 1003.1-2008 によると time_t、しかし long になってる場合がある、ですね。

nobu:r33683 2011-11-09 11:40:39 +0900

template/Doxyfile.tmpl という doxygen の設定ファイルのテンプレートで INCLUDE_PATH の設定を追加しています。 [ruby-core:40843] [Bug #5597]
Doxyfile のテンプレートなんてあったんですねぇ。知らなかった。

ko1:r33684 2011-11-09 13:26:39 +0900

Fiber#transfer で遷移した Fiber 内で、自分自身の Fiber に対して resume を呼ぶと、終了時に "dead fiber call" という例外が発生したり、FreeBSD 9 だと SEGV する不具合の修正。 Fiber に transfer で遷移したフラグを持たせて、一度 transfer を使った Fiber は resume では続行できない(例外が発生する)ようにしています。 [ruby-dev:44742] [Bug 5526]
また NEWS ファイルに非互換の注意書きを追記しています。
ちなみにこれ少し調べたことがあって、自分自身の Fiber#resume を禁止する方法でパッチを作ってみると既存のテストが 1つこけるようになったのでした。

usa:r33685 2011-11-09 16:43:08 +0900

Windows 環境で File.utime に負の値を渡すと、localtime(3) が NULL を返したのにそのまま利用しようとして SEGV する不具合を修正しています。 [ruby-dev:44838] [Bug #5596]

ko1:r33686 2011-11-09 19:02:22 +0900

r33684 の Fiber#resume の例外発生のテストを追加しています。

usa:r33687 2011-11-09 20:08:15 +0900

r33685 で修正した File.utime に負の値を渡すテストを追加しています。