ruby-trunk-changes r40499 - r40515

今日は主にドキュメントの追加、修正がありました。また先日追加された OpenSSL::BN.new の不具合修正もありました。

zzak:r40499 2013-04-27 23:26:20 +0900

lib/yaml.rb に YAML の rdoc 用コメントを追記しています。しかし module 文を追加したので再定義で警告が出るようです。 [ruby-core:53965] [Bug #8213]
YAML って Yet Another Markup Language だと思ってたんですけど YAML Ain't Markup Language だったんですね。だからか! (何がだ)

charliesome:r40500 2013-04-27 23:54:37 +0900

r40499 の YAML の rdoc 追加に便乗して YAML で信頼できない文字列をロードするのはセキュリティ上の危険があることを追記しています。

akr:r40501 2013-04-28 00:38:36 +0900

process.c の obj2gid() で getgrnam(3) の後始末に endgrent(3) を呼ぶところで endgrent(3) が利用可能かのチェックをするようにしています。またそのために configure にチェックを追加しています。が、HAVE_GETGRNAME というのをチェックしていて endgrname() という関数はないみたい……と思ったら typo だったようで後で修正されています。 Bionic (Android の libc) は endgrent() がないんだそうです)。

svn:r40502 2013-04-28 00:38:41 +0900

version.h の日付更新。

akr:r40503 2013-04-28 02:48:28 +0900

r40501 でチェックする関数名を typo していたのを修正しています。

zzak:r40504 2013-04-28 08:04:12 +0900

README.EXT に rb_bug() などのフォーマット文字列の %i 指示子が整数を表す意味で使えない制限事項を追記しています。 %i は r35776 以降 Object を渡すものとして利用されています。これは文字列の中身のポインタだけ渡す呼びかたで rb_raise() など NORETURN の関数を呼ぶ場合にコンパイラの最適化による GC マーク漏れを完全に防ぐのが難しいために追加された機能です。 [Bug #7982]

zzak:r40505 2013-04-28 08:11:19 +0900

r40504 の続き。 %i は Object の埋め込みにつかわれているから使えない、ということも追記しています。 [Bug #7982]

zzak:r40506 2013-04-28 08:30:11 +0900

ext/curses/curses.c の rdoc コメントのサンプルコードが表示する端末上のウィンドウをきれいにしているそうです。実行結果は確認していませんけど。 [ruby-core:53520] [Bug #8121]

zzak:r40507 2013-04-28 09:42:10 +0900

r40504 および r40505 の続きで、rb_vsprintf() にも同様に %i 指示子の制限について追記しています。 [Bug #7982]

zzak:r40508 2013-04-28 09:51:46 +0900

Object#taint と Object#untrust の rdoc コメントに追記して、taint や untrust の意味について説明を追加しています。 untrust ってこういう意味だったんですね。 [ruby-core:53706] [Bug #8162]

zzak:r40509 2013-04-28 10:11:55 +0900

r40499 で YAML の rdoc を追加するために module 文で YAML を定義したため再定義の警告が出ていたので、if false をつけて実行されないようにしています。 [ruby-core:54642] [Bug #8213]

zzak:r40510 2013-04-28 10:35:56 +0900

r40508 の一部の tainted? と untrusted? の rdoc の修正を revert しその他にも英文の文法的な改善のために修正しているようです。

nobu:r40511 2013-04-28 12:38:27 +0900

r40504, r40505, r40507 のさらに続きで README.EXT の %i 指示子の説明を修正。 デフォルトでは inspect ではなくて to_s で文字列化した結果を埋め込み、'+' フラグが追加されていたら inspect を使って文字列化するそうです。そんな仕様すっかり忘れてました。また README.EXT.ja にも同様の追記をしています。 [Bug #7982]

nobu:r40512 2013-04-28 12:54:26 +0900

どうも拡張ライブラリ io/console のテストが止まらなくなることがあるらしく、起動する子プロセスで標準出力、標準エラー出力を書き込む一時ファイルに一緒にリダイレクトするようにして、また待つループに上限をつけて約3秒であきらめるようにしています。

shirosaki:r40513 2013-04-28 22:20:11 +0900

r40461 および r40463 で拡張ライブラリ openssl の OpenSSL::BN.new の引数に整数を受け付けるようにしましたがそこで sizeof(VALUE) と sizeof(long) が異なるプラットフォームではバッファオーバランする可能性があったのと、メモリリークしていたのを修正しています。 あれ、でも ALLOCA_N() を使うようにしたらスタック上に割り当てるようになるから xfree() は不要なんじゃないでしょうか。 なんてことはなくて ALLOCA_N() を使うようにしたのは Fixnum のための固定長のバッファを用意するところで、xfree() で解放しているのは Bignum 用のバッファだったそうで、よく確認せずチケット操作してすみませんでした orz [ruby-core:54615] [Bug #8337]

zzak:r40514 2013-04-28 23:19:18 +0900

標準添付ライブラリ pp.rb の rdoc の markup の修正や言い回しの修正などです。

eregon:r40515 2013-04-28 23:34:22 +0900

r40509 で lib/yaml.rb の rdoc コメントを RDoc に認識させるために追加した module 文を if false で実行されないようにしましたが、YAML = Psych の代入を先にしてから module 文を書く方法を取るようにしています。 参考tweet https://twitter.com/n0kada/status/328342207511801856