ruby-trunk-changes r62564 - r62573

今日は主に拡張ライブラリ date の Date#step の不具合修正などがありました。

mrkn: r62564 2018-02-24 23:56:36 +0900

Rational.convert の実装で引数が Numeric かつ Integer という論理式がありましたが、Integer は Numeric の一部なので冗長なので k_integer_p() のほうだけ残しています。

mrkn: r62565 2018-02-25 00:06:07 +0900

complex.c と rational.c の #if 0 ... #endif で括られてコメントアウトされていた部分を削除しています。

svn: r62566 2018-02-25 00:06:08 +0900

version.h の日付更新。

mrkn: r62567 2018-02-25 00:36:09 +0900

bignum.c の Integer#pow の実装で "**" の呼び出しを rb_funcall() で実際にメソッド呼び出しにしていたのを C の関数 rb_int_pow() を直接呼び出すようにしています。

k0kubun: r62570 2018-02-25 11:12:25 +0900

process.c の rb_f_system() で execarg_obj を RB_GC_GUARD() で保護していないパスがあったので追加しています。

nobu: r62571 2018-02-25 12:08:40 +0900

r62570 の再修正。 rb_f_system() の RB_GC_GUARD() が rb_syserr_fail_str() や rb_exc_raise() など NORETURN として宣言されている関数の後にあったので、コンパイラが無視してしまう恐れがあったのでその直線に置くように変更しています。

nobu: r62572 2018-02-25 13:28:11 +0900

拡張ライブラリ date で Date#step の引数に <=> メソッドが不正な値(-1, 0, 1 以外)を返すように実装されたオブジェクトが渡されると abort(3) で異常終了させてしまっていたので、0より大きいか小さいか等しいかで判定してそういうのも許容するようにしています。 [ruby-core:85796] [Bug #14549]

nobu: r62573 2018-02-25 13:49:51 +0900

拡張ライブラリ date の date_core.c のマクロ sym() で引数が文字列リテラルの時のみ利用できるようにしています。