ruby-trunk-changes r41636 - r41667

今日も bignum.c のリファクタリングや mkmf.rb の修正などがありました。

akr:r41636 2013-06-26 06:53:58 +0900

r41631 の bigsub_int() と同様に bigadd_int() で BDIGIT のサイズが long よりも小さい時にバッファのはみだした領域を参照してしまっていたのを修正しています。

akr:r41637 2013-06-26 07:28:43 +0900

r41631 と同様に今度は bigand_int() での BDIGIT のサイズが long より小さい時のバッファをはみだした参照を修正。

akr:r41638 2013-06-26 12:09:54 +0900

UDPSocket のテスト test/socket/test_udp.rb で開きっぱなしだったソケットを後始末で閉じるようにしています。

akr:r41639 2013-06-26 12:16:12 +0900

bignum.c の bigand_int() で x が負の数の時の考慮を追加しています。また bigor_int() で結果の Bignum のバッファサイズが sizeof(long) より小さかったら少なくとも long が納まるだけのバッファは確保するようにしています。こちらも負の数を考慮しているのだと思います。

akr:r41640 2013-06-26 12:49:45 +0900

r41631 と同様に今度は bigxor_int() での BDIGIT のサイズが long より小さい時のバッファをはみだした参照を修正。

nobu:r41641 2013-06-26 15:27:29 +0900

r41611 で一旦削除して r41620 で revert された bignum.c の LSHIFTX() のなかの冗長な条件演算子を LSHIFTABLE() として別のマクロに切り出して定義をすっきりさせています。

nobu:r41648 2013-06-26 16:42:13 +0900

mkmf.rb で $hdrdir および $arch_hdrdir を CONFIG から取得していたのを RbConfig::CONFIG から取得するように修正しています。これ同じものじゃないかと思いましたが、MakeMakefile::CONFIG は RbConfig::MAKEFILE_CONFIG という定数で初期化されていました。違うのかー。これにより DESTDIR を指定して拡張ライブラリをビルドする時にヘッダを探索するパスが間違っている不具合を修正しています。 [ruby-core:55653] [Bug #8115]

shirosaki:r41655 2013-06-26 21:21:21 +0900

Windows 環境で test/ruby/test_io.rb の test_write_32bit_boundary で大きなファイルを書き込むとタイムアウトが発生してしまい、またその時に一時ファイルの削除に失敗するためディスク容量を消費してしまって ci.rubyinstaller.org が disk full になってしまう、という現象が報告されていて、後始末の削除は r41254 でリトライするようにしたものの、テスト自体はタイムアウトになってしまっていたので、タイムアウト時には skip 扱いにするようにしています。 [ruby-core:55541] [Bug #8519]

nobu:r41656 2013-06-26 22:43:22 +0900

Enumerator#size で値を返せるようにするために size を返す関数の指定つきで Enumerator を生成する rb_enumeratorize_with_size() でその関数の引数の数を明示的に定義していなかったのを、rb_enumerator_size_func という型に宣言して3引数受け取ることを明示するようにしています。このためこれまで rb_ary_size() など既存のコンテナの要素数を返すメソッドの関数などを流用していたのを、専用の関数を定義して渡すようにしています。

nobu:r41657 2013-06-26 22:44:03 +0900

r41656 の続きで、互換性のためとして rb_enumeratorize_with_size() の同名のマクロを定義して、関数の引数に明示的なキャストを付加して関数呼び出しするようにしています。

kou:r41660 2013-06-26 23:13:20 +0900

gc.c で if 文の条件部のかっこの前に空白を入れるスタイルの修正。

nobu:r41661 2013-06-26 23:22:23 +0900

r41656 の続きで enumerator.c の rb_enumeratorize_with_size() に渡すための関数ポインタの型を rb_enumerator_size_func に宣言するように変更しています。

charliesome:r41663 2013-06-26 23:54:36 +0900

拡張ライブラリ bigdecimalBigDecimal.save_rounding_mode の rdoc 用コメントのメソッド名 typo 修正。

charliesome:r41664 2013-06-27 00:02:25 +0900

r41663 の ChangeLog のインデント修正。

svn:r41665 2013-06-27 00:02:30 +0900

version.h の日付更新。

akr:r41667 2013-06-27 00:27:20 +0900

bignum.c の rb_big_pow() で y が Bignum だけど Fixnum で表現可能な数値だった時に一旦 Fixnum に変換してから型による条件分岐をやりなおすようにしています。また rb_absint_numwords() を利用するようにするリファクタリング