From: pegacorn Date: 2008-04-26T23:54:57+09:00 Subject: [ruby-dev:34521] trunk: BigDecimal#<=> が不定値を返す場合がある pegacorn です。 BigDecimal#<=> が不定値を返す場合があります。 % ruby -rbigdecimal -e 'p BigDecimal("1.0") <=> ""' 8 Index: ext/bigdecimal/bigdecimal.c =================================================================== --- ext/bigdecimal/bigdecimal.c (リビジョン 16197) +++ ext/bigdecimal/bigdecimal.c (作業コピー) @@ -730,12 +730,13 @@ switch(op) { - case '*': return INT2FIX(e); /* any op */ + case '*': f = rb_intern("<=>"); break; case '=': f = rb_intern("=="); break; case '!': f = rb_intern("!="); break; case 'G': f = rb_intern(">="); break; case 'L': f = rb_intern("<="); break; case '>': case '<': f = (ID)op; break; + default: rb_bug("Undefined operation in BigDecimalCmp()"); } return rb_num_coerce_cmp(self,r,f); } # なんで '*' が any op なのかわかりませんが、 # + case '*': return Qnil; /* any op */ # は違うし… -- pegacorn