ruby-trunk-changes r49579 - r49587

今日は String#clear で abort することがある不具合の修正、拡張ライブラリ json の更新、base64 の uslsafe 版の機能追加などがありました。

nobu: r49579 2015-02-13 11:06:31 +0900

r49525 と r49575 で openssl のテストで wrap mode をサポートしていない時の例外を無視するようにしたもので、Fedora21 でのエラーの対応。 Fedora21 では例外メッセージが "id-aes128-wrap-pad" というものだそうで…(参照 http://rubyci.blob.core.windows.net/fedora21/ruby-trunk/log/20150213T001502Z.fail.html.gz)。メッセージが決まってないみたいなので "wrap" という文字があれば無視するようにしています。 [Bug #10839]

svn: r49580 2015-02-13 11:06:42 +0900

version.h の日付更新。

hsbt: r49582 2015-02-13 14:19:12 +0900

拡張ライブラリ json の upstream リポジトリからのマージ。 TypedData 対応を各所で分岐するのではなく必要なマクロがなかったら自前で定義する方針にしています。 [ruby-core:67564] [Feature #10739]

nobu: r49583 2015-02-13 16:07:39 +0900

16進数に使う文字をならべた char[] 型の変数 hexdigit を ruby_hexdigits として util.c に定義して、各所で使いまわすようにしています。

mame: r49585 2015-02-13 21:31:30 +0900

標準添付ライブラリ base64 の urlsafe_encode64 が padding 文字に "=" を使うため url-safe でないので、キーワード引数 padding を追加して false を指定されると padding を削るようにしています。デフォルトは true なのでこれまでの呼びかただと結果は同じ(padding あり)になっています。互換性のためですね。
また urlsafe_encode64 も padding がないものも受け付けるようにしています。 NEWS ファイルにも追記されています。 [ruby-core:67570] [Feature #10740]

mame: r49586 2015-02-13 22:06:58 +0900

Object#inspect の結果に String#clear を呼ぶとメモリ破壊により abort する不具合を修正しています。 str_discard() で即座に String オブジェクトのバッファを解放する条件として flags の STR_SHARED をチェックしていましたが STR_NOFREE フラグが立っていないこともチェックするようにしています。setup_fake_str()で作った解放不要な String オブジェクトを解放しようとしてしまっていたようです。 [ruby-core:68110] [Bug #10853]

svn: r49587 2015-02-13 22:07:08 +0900

r49586 で新規追加されたファイルの svn property 設定。