ruby-trunk-changes r64897 - r64909

今日は Integer#pow の処理などで SEGV する可能性があった不具合の修正や lldb 用のスクリプトの機能追加などがありました。

nobu: r64897 2018-10-03 01:42:21 +0900

Fuzzing (ランダムな入力を生成してプログラムが異常終了しないかチェックする手法)でみつけたそうですが、Integer#pow で結果が Float になるケースの考慮が漏れてて Rational の分母に Float が入ってしまう可能性を無視して処理していたところがあった不具合を修正しています。 r64877 と類似の問題ですかね。 [ruby-core:89239] [Bug #15189]

svn: r64898 2018-10-03 01:42:29 +0900

version.h の日付更新。

nobu: r64899 2018-10-03 03:03:43 +0900

64897 の再修正。 rat2dbl_without_to_f() から分子分母の共通の処理を num2dbl_without_to_f() というマクロに切り出しています。正確にはもうちょっと一般化しているみたいですね。 [ruby-core:89239] [Bug #15189]

nobu: r64900 2018-10-03 03:51:21 +0900

shebang つまり "#!" だけ含まれている(改行もない)ファイルをスクリプトとして読ませると SEGV するという不具合を修正しています。 [ruby-core:89240] [Bug #15190]

nobu: r64901 2018-10-03 04:14:24 +0900

misc/lldb_cruby.py の lldb_rp コマンドの実装で未初期化だったら lldb_init() を呼んでおくという guard を追加しています。

nobu: r64902 2018-10-03 13:07:16 +0900

misc/lldb_cruby.py のオブジェクトの詳細を表示する lldb_rp メソッドで、さらに debugger.HandleCommand() を呼んでデバッガにコマンドを解釈させてその出力を得るのを append_command_output() という関数に切り出しています。表示順が狂うのに対処しているみたいです。

nobu: r64903 2018-10-03 13:27:19 +0900

misc/lldb_cruby.py の lldb_rp で T_HASH、T_BIGNUM、T_FLOAT などのタイプにも対応しています。っていうかまだ対応してなかったのか。

nobu: r64904 2018-10-03 13:37:43 +0900

internal.h のマクロ BIGNUM_EMBED_LEN_SHIFT の定義で誤って(たまたま同じ数値だった) BIGNUM_EMBED_LEN_NUMBITS を使っていたのをマジックナンバーで置き換えて、BIGNUM_EMBED_LEN_MASK の定義に BIGNUM_EMBED_LEN_SHIFT を利用するようにしています。実際にはマクロ展開される場所はさらに後だから問題ないけどなんとなく BIGNUM_EMBED_LEN_SHIFT がそれを利用する BIGNUM_EMBED_LEN_MASK の後に定義されるのはちょっと気持ち悪さが(まあそういう例はいっぱいありそうだけどここはすぐ次の行なので)。

shyouhei: r64905 2018-10-03 13:49:34 +0900

configure.ac に configure 時のオプション --with-arch=x86_64h というのを受け付けるというか、このせいでビルド失敗するのを回避するようにしています。これは最近の macOS で使われてる architecture 名だそうです。知らなかった……。 https://github.com/ruby/ruby/pull/1971

nobu: r64906 2018-10-03 15:48:35 +0900

r64802 で追加した最新の Xcode での警告抑制のための wrapper ツール tool/darwin-cc を使うための configure.ac のコマンドで PWD 変数をクリアしてから cd してるのは symbolic link を強制的に解決させるためだったみたいで、かわりに cd -P というオプションを利用するようにしています。これまたこんなオプションがあるとは知らなかった。

kazu: r64907 2018-10-03 16:43:13 +0900

.editorconfig で Onigmo から移植してきている reg*.c や reg*.h などのファイルのインデントは 2 に指定しています。おー、なるほどこれらのファイルはスタイルが違いますね。

nobu: r64908 2018-10-03 18:54:21 +0900

misc/lldb_cruby.py の lldb_rp でさらに debugger.HandleCommand() を使ってたところを r64902 で追加した append_command_output() を使うようにリファクタリングしています。

nobu: r64909 2018-10-03 18:54:25 +0900

lldb_cruby.py の lldb_rp() に T_CLASS、T_MODULE、T_ICLASS 型オブジェクトの表示の対応を追加しています。