From: Shugo Maeda Date: 2009-01-30T16:22:46+09:00 Subject: [ruby-dev:37861] [Bug #1073] test_to_s(Complex_Test) fails on Solaris Bug #1073: test_to_s(Complex_Test) fails on Solaris http://redmine.ruby-lang.org/issues/show/1073 起票者: Shugo Maeda ステータス: Open, 優先度: Low ruby -v: ruby 1.9.1p5000 (2009-01-29 trunk 21875) [i386-solaris2.10] Solarisでtest_to_s(Complex_Test)が失敗するようです。 $ make test-all TESTS=test/ruby/test_complex.rb ... 1) Failure: test_to_s(Complex_Test) [/export/home/shugo/src/ruby_1_9_1/test/ruby/test_complex.rb:591]: <"NaN+NaN*i"> expected but was <"NaN-NaN*i">. 2289 tests, 2637768 assertions, 1 failures, 0 errors, 0 skips r20473で、signbit()がある時は、isnan()だったら常にQfalseを返すようにf_signbit()が修正されていますが、 signbit()がない時も同じようにisnan()を見るようにするべきなんじゃないでしょうか。 Index: complex.c =================================================================== --- complex.c (revision 21875) +++ complex.c (working copy) @@ -894,8 +894,10 @@ #else { char s[2]; + double f = RFLOAT_VALUE(x); - (void)snprintf(s, sizeof s, "%.0f", RFLOAT_VALUE(x)); + if (isnan(f)) return Qfalse; + (void)snprintf(s, sizeof s, "%.0f", f); return f_boolcast(s[0] == '-'); } #endif ---------------------------------------- http://redmine.ruby-lang.org