ruby-trunk-changes r53691 - r53695

今日は respond_to? を再定義したオブジェクトへの Array#dig や Hash#dig などからの dig の呼び出しで NoMethodError になるべき時に Stack consistency error が発生する不具合修正がありました。

naruse: r53691 2016-01-30 00:21:52 +0900

test/lib/iseq_loader_checker.rb の未使用変数の警告除去。

svn: r53692 2016-01-30 00:21:53 +0900

version.h の日付更新。

nobu: r53693 2016-01-30 10:08:20 +0900

gems/bundled_gems の power_assert, test-unit, minitest, rake のバージョンを更新しています。

nobu: r53694 2016-01-30 10:49:05 +0900

gems/bundled_gems のバージョンを機械的に更新する make update-bundled_gems ターゲットを追加しています。

nobu: r53695 2016-01-30 15:19:13 +0900

rb_check_funcall_with_hook() でメソッド探索時に再定義された respond_to? を呼んでそれが false を返したのでメソッドがみつからなかったと判定して Qundef を返す時に渡された hook を呼んでなかったので、rb_obj_dig() からメソッドを呼び出す時に Stack consistency error というエラーで異常終了することがある不具合があったようです。 この rb_check_funcall_with_hook() という関数はかなり 2.1 以前から存在しているようなのですが、昔は marshal.c で利用されていたものの、今は rb_obj_dig() からしか利用されていないので、2.1/2.2 でも同様の問題がありますがどこからも呼ばれていないので実害はない状態みたいです。 [ruby-core:73556] [Bug #12030]