ruby-trunk-changes r31438 - r31447

syck の日付パースの不具合修正などがありました。

nobu:r31438 2011-05-05 22:09:42 +0900

date_core.c で一日の nano second を表現する数値が接尾語 LL を持つリテラルで定義されていましたが、long long は常に利用可能ではないので HAVE_LONG_LONG で条件コンパイルして必要なら Bignum を利用するようにしています。

kosaki:r31439 2011-05-05 22:26:18 +0900

既に利用されていない関数マクロ native_mutex_reinitialize_atfork を削除しています。

kosaki:r31440 2011-05-05 23:09:21 +0900

open の mode に File::CLOEXEC を指定した時のテストを修正。popen を使って ruby を fork していましたが現在の ruby の Process.spawn は特に指定したもの以外の file descriptor は close_on_exec が指定されていなくてもデフォルトで close されるので*1 File::CLOEXEC の指定の有無に関わらずテストは成功していたので、Process.spawn に :close_others => false の指定をして起動するようにしています。

shyouhei:r31441 2011-05-06 15:19:12 +0900

syck の Syck.load で日時を読み込むと、小数点以下の秒数を usec で取り込む時に小数点の位置を意識していないため精度が 6桁ぴったりでないと誤った usec の値を返してしまっていたのを修正しています。 [ruby-core:35713] [Bug #4571]

shyouhei:r31442 2011-05-06 15:19:14 +0900

r31441 のぶんの ChangeLog 追記です。

shyouhei:r31443 2011-05-06 15:19:17 +0900

r31411 の再修正。文字列の秒の小数点以下の桁を無制限にスタックに取った配列へコピーしようとしていたので、6桁までコピーして後は捨てるようにしています(切り捨て)。
ということは元々(r31443 の前)の桁数で分岐するのをやめて最大先頭6桁までをコピーして整数で扱えばよさそうですね。……と思ったら r31447 へ続く。

svn:r31444 2011-05-06 15:19:20 +0900

version.h の日付更新。

naruse:r31445 2011-05-06 17:38:36 +0900

r31438 の再修正。 long を経由して計算するのに ULONG_MAX を用いてオーバーフローの判定をしていたのと long へのキャストを追加。 DAYS_IN_SECONDS は接尾語のないリテラルなので int で計算してオーバフローしていました。

naruse:r31446 2011-05-06 17:44:07 +0900

ext/syck/rubyext.c で未使用の変数削除や #if DEBUG を #ifdef DEBUG へ変更するなど警告除去。

nobu:r31447 2011-05-06 22:36:02 +0900

(r31443 より)……と思ったらそのように修正されました。またテストも追加されています。