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