ruby-trunk-changes r35111 - r35121

shirosaki:r35111 2012-03-22 23:05:31 +0900

先日テストだけ追加されてた Windows 環境で IO#pos がファイルポインタを動かしてしまうという不具合は、テキストモードで改行の後の時にだけ発生する問題だったようです。メソッドによってテキストモード/バイナリモードを切り替える時の処理に問題があったようです。差分をみてもちょっと具体的にどの部分でファイルポインタの移動が起きていたのかわからないですけど。バッファオーバフローの可能性があったのを修正しているというコミットログもあり、io_unread() で buf という変数を導入して新規にバッファを割り当てるようにしている部分のことかと思うのですが、buf に確保しているメモリってどこで解放してるんでしょう。これリークしてないですかね。 [ruby-core:43497] [Bug #6179]

nobu:r35112 2012-03-22 23:14:39 +0900

String#encode や encode! でエンコード変換で文字列が変化しなかったらエンコーディングの設定のみ変更して返すようにしています。エンコーディングに対して不正な文字を含む文字列を encode で同じエンコーディングに変換すると String#valid_encoding? が true に戻ってしまう不具合を修正しています。 [ruby-core:43557][Bug #6190]

naruse:r35113 2012-03-23 07:52:05 +0900

r35104 の Makefile 生成のコマンドの変更を revert しています。 FreeBSD でビルドできなくなったとのこと。

svn:r35114 2012-03-23 07:52:10 +0900

version.h の日付更新。

nobu:r35115 2012-03-23 09:56:46 +0900

r35104 の再修正。make -j オプションで並列ビルドできるように Makefile の生成方法を変更しています。

naruse:r35116 2012-03-23 11:02:54 +0900

r35102 の openssl の rsa_generate 関数の引数の型変更が FreeBSD でテストの失敗を引き起こしていたそうで revert しています。

naruse:r35117 2012-03-23 11:33:05 +0900

r35102 の再修正。 exp とビット演算するマスクを作っているところで整数リテラルの型が int になっていたためオーバフローしていたのを修正しています。 [ruby-core:42970] [Bug #6094]

nobu:r35118 2012-03-23 12:04:20 +0900

rb_enc_asciicompat() という関数マクロの引数は展開後複数回評価されるようになっているので、変数への代入を引数に書いていたのを変数参照のみ書くようにリファクタリングしています。

nobu:r35119 2012-03-23 12:14:49 +0900

test/ruby/test_io.rb の IO.for_fd を使ったテストでオブジェクトが GC で回収された時の動作のチェックのためオブジェクトを回収させたくてメソッドを再帰させたりしているのですが、マシンスタックも消費して GC されやすくするように 1.times を挟むようにしています。

nobu:r35120 2012-03-23 13:19:24 +0900

bignum.c で定義されている文字列を数値に変換する rb_str_to_inum() で文字列を char * な C の文字列としてアクセスしているので文字列のエンコーディングが ASCII compatible であることをチェックするようにしています。たとえば UTF-16エンコードされた文字列を to_i などで変換すると結果が間違ってしまっていました。 [ruby-core:43566][Bug #6192]

duerst:r35121 2012-03-23 15:12:02 +0900

encoded_dup() のコメントに変換元と変換後のエンコーディングに同じものを指定したら変換せずに返すだけでエラーになったりしないことを追記しています。 [ruby-core:43557][Bug #6190]