ruby-trunk-changes r36849 - r36856

今日は Set のメソッド追加や BigDecimal#to_f のアンダーフローエラー検出などの変更がありました。

akr:r36849 2012-08-29 23:44:08 +0900

process.c の rb_last_status_clear() を Kernel#system とバッククオートリテラルによって外部コマンドを起動する時の処理で呼び出して、rb_thread_t に格納される last_status をクリアするようにしています。

luislavena:r36850 2012-08-30 07:45:24 +0900

r36811 で Windows の File.expand_path のために追加したテストが環境変数 HOME が定義されていない時にエラーになっていたので実行条件を追加しています。 [ruby-core:47322]

svn:r36851 2012-08-30 07:45:28 +0900

version.h の日付更新。

naruse:r36852 2012-08-30 09:22:11 +0900

URI.parse に ftp の url の ftp:// の "//" がないものを渡すと、InvalidURIError ではなくて NoMethodError が発生していたので InvalidURLError が発生するようにしています。 [ruby-core:47344] [Bug #6945]

knu:r36853 2012-08-30 13:01:58 +0900

標準ライブラリの Set の比較演算子メソッド <, >, <=, >= を proper_subset?, proper_superset?, subset?, superset? の alias として定義するようにしています。

nobu:r36854 2012-08-30 16:17:56 +0900

BigDecimal#to_f で strtod(3) が errno=ERANGE を返した時にオーバフローのみ想定していましたが、アンダーフロー時(戻り値に 0 を返して errno=ERANGE が設定される)も検出して例外メッセージを変更しています。 [ruby-core:47342] [Bug #6944]

nobu:r36855 2012-08-30 16:20:05 +0900

vm_trace.c の exec_hooks() でループに使う hook 変数のスコープが TH_EXEC_TAG() のブロックの外で宣言、初期化されてブロック内で中で利用されていたためにコンパイラの警告が出ていたので(TH_EXEC_TAG() は setjmp() を含むので longjmp() で飛んできた時に書き換えられている可能性があります)内側に宣言を移動しています。ついでに while 文のループを for 文に修正。

akr:r36856 2012-08-30 18:22:18 +0900

r36849 と同様 open にパイプでコマンドを記述して popen のように使った場合に close する時に rb_thread_t::last_status をクリアするようにしています。