ruby-trunk-changes r45391 - r45397

今日は GC パラメータの変更用環境変数の取り込みの名前間違いの不具合修正、C level backtrace 取得の不具合修正、Ripper の修正などがありました。

naruse: r45391 2014-03-24 13:18:28 +0900

r45383 あたりの rb_bug() での C level backtrace 表示の修正でさらに DWARF の line_Base のエントリを char として解釈してしまっていたので signed char として読むように明示的に符号つきを指定しています。 あれ、char って指定ない時に unsigned char になるんでしたっけ? [ruby-dev:48068] [Bug #9654]

svn: r45392 2014-03-24 13:18:32 +0900

version.h の日付更新。

hsbt: r45393 2014-03-24 14:28:03 +0900

GC のパラメータチューニング用の環境変数 GC_HEAP_FREE_SLOTS と GC_HEAP_INIT_SLOTS が逆に解釈されて取り込まれるようになっていた不具合を修正しています。 2.1 にもバックポートが必要ですね。

naruse: r45394 2014-03-24 15:28:32 +0900

C level backtrace の取得で実行中のプログラム自身のパスを取得するのに Linux の場合は /proc/self/exe が利用できるので、これを readlink してファイル名を取得しておいて、base_addr が一致した時は dladdr() から取得したファイル名ではなくこちらを利用するようにしています。

naruse: r45395 2014-03-24 17:02:54 +0900

r45364 の Time オブジェクトのタイムゾーンの Marshal.load での不具合修正で追加したテストで環境変数 TZ に "Japan" を入れていたのを "Asia/Tokyo" に修正しています。 TZ に何を受け付けるのかは標準ライブラリの実装によってまちまちだと思いますが少なくとも FreeBSD では "Japan" はダメとのこと。 [Bug #9652]

nobu: r45396 2014-03-24 17:26:09 +0900

もうひとつ r45364 で追加されたテストについて assertion の引数が result, expected になっていたので expected, result になるように修正しています。 [Bug #9652]

nobu: r45397 2014-03-24 22:19:57 +0900

拡張ライブラリ ripper で初期化時に渡すファイル名を指定する引数をそのまま格納していたので、rb_str_new_frozen() で freeze した文字列にして保持しておくようにして渡された String オブジェクトが変更されても影響を受けないようにしています。 RSTRING_PTR() で取り出したポインタも保持していたので書き換えられると…と思いきやどうも parse 時にも再度オブジェクトからポインタを取り出してるような気がするので SEGV はしないかも。とにかく変更できてしまうのはまずいので freeze するようにしています。