ruby-trunk-changes r42388 - r42412

今日は VM のスタックオーバフロー検出の修正、eval 内の Refinements の影響するスコープの修正、Range#last の変更、Readline の不具合修正などがありました。

zzak:r42388 2013-08-06 01:25:04 +0900

標準添付ライブラリ rssrss/2.0.rb の rdoc コメントに RSS::Rss クラスのドキュメントの追加と、rss/atom.rb の rdoc の typo 修正。 [ruby-core:56392] [Bug #8740]

svn:r42389 2013-08-06 01:25:09 +0900

version.h の日付更新。

zzak:r42390 2013-08-06 01:29:28 +0900

r42378 で追加した標準添付ライブラリ rssRSS::RSS09 の rdoc サンプルコードの typo を修正。 [ruby-core:56375] [Bug #8732]

zzak:r42391 2013-08-06 01:42:37 +0900

Process.spawn の rdoc コメントに組込みコマンドはシェル経由で実行されるが、何が組込みコマンドなのかは OS によるので、同じコマンドでも環境によって異なる結果になるよ、というようなことを追記しています。 [ruby-core:55572] [Bug #8550]

akr:r42392 2013-08-06 12:26:34 +0900

valgrind で実行した時のメモリ領域の指定をして不要な警告/エラーを抑制するための VALGRIND_MAKE_MEM_DEFINED および VALGRIND_MAKE_MEM_UNDEFINED を gc.c から internal.h に移動して、bignum.c の rb_big_realloc() と bignew_1() で VALGRIND_MAKE_MEM_UNDEFINED で未初期化領域をマークするようにしています。

akr:r42393 2013-08-06 12:33:22 +0900

Integer#next の rdoc の call seq で self として fixnum と書かれていたのを integer に変更しています。

nobu:r42394 2013-08-06 14:12:48 +0900

win32/win32.c の rb_w32_system_tmpdir() で符号つき整数と符号なし整数の比較のコンパイラ警告抑制のため明示的キャストを追加しています。

nobu:r42395 2013-08-06 16:04:00 +0900

string.c の長い文字列を指定したサイズ以降を "..." で省略した形式にする rb_str_ellipsize() の rdoc 用コメントの typo を修正しています。

shugo:r42396 2013-08-06 16:15:18 +0900

eval_string_with_cref() でブロックの cref をコピーして使うことで eval 内で main.using で Refinements を適用した時にそれが eval の外にも影響してしまう不具合を修正しています。 [ruby-core:56329] [Bug #8722]

nobu:r42397 2013-08-06 17:02:20 +0900

r42385 で Windows 版での文字エンコーディング変換の変更の続きっぽいです。 encidx を使ってエンコーディングを判定するようにして rb_enc_find() を呼ぶのを避けるようにしています。ここで miniruby の場合エンコーディングのロード失敗の警告が出るそうです。また UTF-16LE への変換には WideCharToMultiByte() を利用するようにしています。

ko1:r42398 2013-08-06 17:33:05 +0900

VM の各命令の前後で VM のスタックオーバフローのチェックをしているところで、stack frame を積む前にチェックをしていたため正確なチェックができていなかったので、vm_push_frame() に消費スタックサイズの引数を追加して vm_push_frame() 内でこのサイズを加味してチェックするように変更しています。また vm_push_frame() と重複してチェックしていたところをいくつか削っています。

nobu:r42399 2013-08-06 17:42:25 +0900

r42397 の追加修正。 rb_enc_str_new() に渡す encoding を UTF-8 に固定しています。

nobu:r42400 2013-08-06 17:42:51 +0900

Range#last を引数なしで呼び出した時に exclusive フラグが立っている時(終端を含まない Range)に最後の要素を返さないようにしています。 引数の有無で動作に違いがあったのを修正。しかし非互換ですね、と思ったら Matz は元の挙動を意図的なものとしてチケットを Reject してますね…… [ruby-dev:47587] [Bug #8739]

ko1:r42401 2013-08-06 17:59:24 +0900

r42398 の再修正。 vm_push_frame() に追加した引数 stack_max の型を size_t に変更しています。

kouji:r42402 2013-08-06 21:24:40 +0900

拡張ライブラリ readline の Readline.output=, Readline.input= で入出力の IO を切り替えた時に IO オブジェクトから FILE 構造体へのポインタを取り出して保存していたのが、元の IO オブジェクトが close されると破棄されて SEGV を引き起こす可能性があったので fd を dup(2) して fdopen() で別の FILE 構造体を確保してそちらを保持するように変更しています。 [ruby-dev:47509] [Bug #8644]

nobu:r42403 2013-08-06 21:38:51 +0900

lib/net/http/header.rb に r42400 で変更した Range#last の挙動に依存した処理が入っていたところがあったので削っています。 [ruby-dev:47587] [Bug #8739]

nobu:r42404 2013-08-06 21:38:53 +0900

json/add/range.rb でも r42400 で変更した Range#last に依存していた部分があったので Range#end を使うように変更しています。ここは Range#last の挙動がどうであれ Range#end を使うほうが正しいような気がしますね。 [Bug #8739]

kouji:r42405 2013-08-06 21:52:22 +0900

拡張ライブラリ readline で Readline.point= メソッドを追加して rl_point 変数を操作できるようにしています。 [ruby-dev:47535] [Feature #8675]

nobu:r42406 2013-08-06 21:56:12 +0900

r42405 の行末の空白除去。

nobu:r42407 2013-08-06 21:59:59 +0900

r42400 の追加変更。 Range#last が無引数で呼ばれた時に Range が空集合だったら nil を返すようにしています。 [ruby-dev:47587] [Bug #8739]

kouji:r42408 2013-08-06 22:07:25 +0900

ext/readline/readline.c および test/readline/test_readline.rb のインデント修正。

kouji:r42409 2013-08-06 22:19:19 +0900

拡張ライブラリ readline から rb_ensure(4) のコードを削除しています。また rdoc コメントから SecurityError についての記述を削除して、ついでに NotImplementedError が発生する可能性のあるメソッドにはそれを追記しています。

zzak:r42410 2013-08-06 22:36:31 +0900

標準添付ライブラリ rssRSS::RSS10 の rdoc コメントを追加しています。 [ruby-core:56392] [Bug #8740]

zzak:r42411 2013-08-06 22:39:15 +0900

Time.new の rdoc 用コメントのサンプルコードの typo 修正。 https://github.com/ruby/ruby/pull/374

zzak:r42412 2013-08-06 22:46:14 +0900

r42410 の ChangeLog エントリの typo 修正。