ruby-trunk-changes r55250 - r55262

今日はパスの長さが MAXPATHLEN を超えているケースの対応や String#downcase などの casemap 関係のメソッドで不正文字があった時の処理の追加などがありました。

nobu: r55250 2016-06-01 22:17:31 +0900

system の crypt(3) も crypt_r(3) もない時に missing/crypt.c の代替実装を使う時に crypt_r() のほうを使うようにしています。

nobu: r55251 2016-06-01 22:38:59 +0900

missing/crypt.c に USE_NONREENTRANT_CRYPT というマクロで crypt() などの定義を括って未使用の関数の警告を抑制するようにしています。

nobu: r55252 2016-06-01 22:39:01 +0900

拡張ライブラリ openssl の r55249 での 2038年問題の対応で days が int に収まっているかオーバフローチェックをするようにしています。

duerst: r55253 2016-06-02 10:24:52 +0900

String#downcase などの Unicode の casemap 処理時に不正なバイト列をみつけたら ArgumentError を発生させるようにしています。

nobu: r55254 2016-06-02 10:54:17 +0900

rb_scan_args() のマクロ版で rb_scan_args_hash_idx() と rb_scan_args_block_idx() で同じインデックス計算を繰り返さず使いまわすようにしています。

svn: r55255 2016-06-02 10:54:18 +0900

version.h の日付更新。

nobu: r55256 2016-06-02 11:30:43 +0900

r55251 で初期化するようにした missing/crypt.c の static 変数 constdatablock の初期化子を修正しています。 Visual C では空の初期化子は使えなかったそうです。

nobu: r55257 2016-06-02 12:05:40 +0900

missing/crypt.c の変数の型を修正(long -> unsigned long)して警告除去しています。

nobu: r55258 2016-06-02 14:27:31 +0900

r5524r で missing/crypt.c から missing/des_tables.c を切り出した時にこのソースコードを生成するためのコードもコメントアウトされた状態で missing/crypt.c に追加されていましたが、これを使って missing/des_tables.c を自動生成するルールを common.mk に追加しています。

nobu: r55259 2016-06-02 16:51:36 +0900

misc/ruby-mode.el にインデント除去つきヒアドキュメントの記法に対応する修正を入れているようです。 https://github.com/ruby/ruby/pull/1372

nobu: r55260 2016-06-02 17:05:21 +0900

Windows 10 でパスの長さの MAXPATHLEN の制限がなくなったのに対応して Windows 版での LOAD_PATH の設定で GetModuleFileNameW() を使って必要なサイズまで文字列バッファを伸長して作成するようにしています。

nobu: r55261 2016-06-02 21:18:12 +0900

これも Windows でのパスの長さの制限の関係でしょうか。 get_special_folder() という関数で SHGetPathFromIDListW() のかわりに SHGetPathFromIDListEx() を使ってバッファサイズをチェックしつつパスを取得するようにしています。

nobu: r55262 2016-06-02 21:21:42 +0900

拡張ライブラリ etc で OS X で static 変数に用意している MAXPATHLEN のバッファで足りなかった場合に再度動的に確保した文字列バッファを使って systmpdir を取得するようにしています。