ruby-trunk-changes r38834 - r38848

今日は WIN32OLE が Thread#initialize を再定義していたための不具合の応急処置や、irbhistory file の権限のチェックの不具合修正などがありました。

keiju:r38834 2013-01-15 22:42:09 +0900

r38813 で irbirb/ext/save-history.rb を使って history file を保存する時に既存のファイルの権限チェックをする時に数値の 0 が偽になることを期待したような if 文になっていたので 0 との明示的な比較をするように修正しています。 [Bug #7694]

nobu:r38835 2013-01-15 23:07:17 +0900

io.c の pipe_open() で HAVE_SPAWNVE が未定義の時に未使用の変数の警告になるのを除去しています。

nobu:r38836 2013-01-15 23:07:20 +0900

process.c の p_uid_change_privilege() と p_gid_change_privilege() で set{e,r}uid() や set{e,r}gid() が未定義の時の未使用変数の警告を除去しています。

nobu:r38837 2013-01-15 23:07:22 +0900

object.c の rb_mod_to_s() でクラスの文字列化で固定の文字列の部分で rb_str_cat2() で連結していたのを元から1つの文字列として生成するようにしています。

nobu:r38838 2013-01-15 23:07:24 +0900

object.c に CLASS_OR_MODULE_P() というオブジェクトが Class か Module であることを確認するマクロを導入して TYPE() を使った分岐を置き換えています。

nobu:r38839 2013-01-15 23:12:36 +0900

tool/vpath.rb で @separator に File::PATH_SEPARATOR ではなく RbConfig::CONFIG["PATH_SEPARATOR"] をデフォルトで用いるようにしています。 vpath.rb は r37985 で tool/instruction.rb から切り出されたものですね。何をするものかは知らないのですが……。

drbrain:r38840 2013-01-16 03:06:24 +0900

doc/syntax/control_expressions.rdoc と doc/syntax/exceptions.rdoc に retry 文について追記しています。 retry って 1.9 以降 rescue 節でしか使えなくなってるんですね。忘れてた……。

svn:r38841 2013-01-16 03:06:35 +0900

version.h の日付更新。

drbrain:r38842 2013-01-16 03:15:12 +0900

doc/syntax の rdoc ファイル間のリンクの指定を修正しています。

drbrain:r38843 2013-01-16 03:29:05 +0900

doc/syntax/calling_methods.rdoc と doc/syntax/calling_methods.rdoc のメソッド定義とメソッド呼び出しの項目でおたがいに対するリンクを追加しています。 またマークアップの修正もあります。

drbrain:r38844 2013-01-16 03:54:54 +0900

doc/syntax/control_expressions.rdoc でドキュメント内で通常は if 文や case 文の when 節の "then" は省略するようにしています。 また while や until の "do" も省略可能であることを追記しています。

drbrain:r38845 2013-01-16 09:36:07 +0900

lib/ 以下のサブディレクトリに .document ファイルをいくつか追加して rdoc でドキュメント化しないファイルを除外するようにしています。

naruse:r38846 2013-01-16 14:30:20 +0900

r38478 でスタックサイズの設定のテストを追加する時に test/ruby/test_fiber.rb のメソッド定義全体が if false ... end で括られて実行されていなくなっていたのを削除しています。 おそらく誤って混入した if 文だと思います。

nobu:r38847 2013-01-16 18:43:11 +0900

vm_method.c の call_cfunc_invoker_func() で関数ポインタを返すために関数名をそのまま return していたのですが、明示的な & 演算子をつけるようにしています。 VC6 で警告が出力されていたためとのことです。

nobu:r38848 2013-01-16 18:45:48 +0900

拡張ライブラリ win32ole で Thread の起動を捕捉して WIN32OLE.ole_initialize を呼ぶようにしているのですが、 Thread#initialize を再定義すると本来 thread local であるべき svar が共有されてしまうという問題で flip-flop 条件式のテストが失敗していたので、 Thread#initialize の再定義ではなく TracePoint で thread_start と thread_end で WIN32OLE.ole_initialize と WIN32OLE.ole_uninitialize を呼ぶように設定するように実現方法を変更しています。 [ruby-core:51365] [Bug #7681]
Thread#initialize の再定義時の挙動もそれはそれで問題なのでしょうけど、どうも修正が難しいという判断だったみたいですね。