ruby-trunk-changes r57296 - r57305

今日はある種の文法エラーで SEGV してしまう不具合の修正、String#scrub の不具合の修正などがありました。

nobu: r57296 2017-01-10 21:18:21 +0900

numeric.c の fix_mul() で引数の x が 0 か 1 の時のショートカットを実装しています。

kazu: r57297 2017-01-10 21:32:56 +0900

標準添付ライブラリ net/pop とそのテストの magic comment fronzen_string_literal を true に変更しています。

nobu: r57298 2017-01-10 22:37:34 +0900

rational.c で f_idiv() の実装を引数 x が整数オブジェクトだったら rb_int_idiv() を直接呼ぶようにしてメソッド呼び出しを抑制しています。これで不要になった fun2 マクロは削除しています。

nobu: r57299 2017-01-10 22:41:18 +0900

rational.c の nurat_reduce() で引数のいずれかが 1 だった時に f_gcd() を呼ばずにすぐ return するようにしています。

nobu: r57300 2017-01-11 00:28:11 +0900

不正な break や retry で文法エラーになる時に、条件によってはインタプリタが SEGV で異常終了してしまっていた不具合を修正しています。 [ruby-core:76531] [Bug #12613]

svn: r57301 2017-01-11 00:28:12 +0900

version.h の日付更新。

nobu: r57302 2017-01-11 10:03:37 +0900

String オブジェクトのエンコーディングに対して不正な文字を置換する String#scrub にはブロックを渡して、そのブロックで置換文字を指定するという機能がありますが(そうだったのか…)、文字列のエンコーデングがASCII非互換なエンコーディングだった時にブロックよりも引数の repl が優先されていたためブロックが呼び出されないという不具合を修正しています。 [ruby-core:79038] [Bug #13119]

nobu: r57303 2017-01-11 11:18:45 +0900

r57302 の続き。文字列のエンコーディングが ASCII 非互換な時にブロック呼び出しに渡すパラメータが残りの文字列全体になっていたので、置換したい文字のぶぶんだけ切り出したものを渡すようにしています。 [ruby-core:79038] [Bug #13119]

nobu: r57304 2017-01-11 11:31:02 +0900

r57302 および r57303 の続き。String#scrub に置換文字の指定が引数もしくはブロックとして両方が重複して渡されていたら ArgumentError にするようにしています。 [ruby-core:79038] [Bug #13119]

nobu: r57305 2017-01-11 13:12:56 +0900

r57284 の Module#const_set での Class/Module の名前付けの変更で不正なクラス名が見えてしまう不具合があったので、クラス名をキャッシュする条件を変更しています。 [ruby-core:79039] [Bug #13120]