ruby-trunk-changes r46544 - r46550

今日は主に ENV のメソッド群の、特に Windows 版でのメモリリークなどの不具合修正がありました。

nobu: r46544 2014-06-25 03:02:31 +0900

ENV から環境変数を取得する時の Windows 版でのエンコーディング変換の処理を抽出して関数 evn_str_transcode() にするリファクタリング。 r46540 の続きって感じですね。

svn: r46545 2014-06-25 03:02:43 +0900

version.h の日付更新。

nobu: r46546 2014-06-25 03:24:24 +0900

hash.c で invalid_envname() と check_envname() が Windows 環境でのみ利用されていたので #if のコンパイル条件をまとめています。

nobu: r46547 2014-06-25 10:20:01 +0900

$SAFE > 0 の時に ENV のキー(環境変数名)や値の文字列が taint されていたら SecurityError 例外が発生するようにしています。 ENV[]= と ENV.delete は既にそうなっていたそうですが、他のメソッドが対応していなかったようです。 [ruby-dev:48321] [Bug #9976]

normal: r46548 2014-06-25 15:55:10 +0900

ccan/container_of/container_of.h のポインタ演算時のキャストに const を付加しています。コンパイルオプションに -Wcast-qual がついている時の警告抑制のためだそうです。

nobu: r46549 2014-06-25 21:18:53 +0900

ENV のメソッドで環境変数名や値を指定する文字列に NUL 文字 '\0' が含まれていないかチェックする処理を関数に抽出するリファクタリング

nobu: r46550 2014-06-25 22:31:34 +0900

Windows 版で ENV[]= で環境変数をセットする場合サイズの上限に達していないか検査するために GetEnvironmentStringsA() で取得した文字列バッファを解放していなくてメモリリークしていた不具合を修正しています。 [ruby-dev:48323] [Bug #9977]