Begin forwarded message: > From: Daniel Azuma <dazuma / gmail.com> > Date: March 31, 2007 10:27:44 AM PDT > To: ruby-talk / ruby-lang.org (ruby-talk ML) > Subject: Bug in Bignum.to_s (1.8.6 only) > Reply-To: ruby-talk / ruby-lang.org > X-Spam-Status: No, hits=0.4 required=5.0 tests=BAYES_01,ZSS_RUBY > autolearn=no version=2.64-zss_spam_1_1_1 > > Hello all, > > Just making a quick note of a bug we found in Bignum.to_s in Ruby > 1.8.6, > in case it burns anyone else. > > Examples: > > irb(main):001:0> 18446744073709551615.to_s(36) # should be > "3w5e11264sgsf" > => "w5e11264sgsf" > irb(main):002:0> -18446744073709551615.to_s(8) # should be > "-1777777777777777777777" > => "11777777777777777777777" > > The bug affects bases 8, 9, and 32-36 inclusive, over certain > ranges of > values depending on the base. Values immediately less than 2**64 > seem to > be particularly affected. For example, in base 36, all values from > 4738381338321616896 through 18446744073709551615 (which is 2**64-1) > will > fail. > > It manifests only in Ruby 1.8.6. Ruby 1.8.5 works correctly. (It > appears > that some optimization work went a little too far.) > > For anyone affected by this, I filed the bug on RubyForge, and > posted a > possible "works for me, but use at your own risk" fix to bignum.c: > > http://rubyforge.org/tracker/? > func=detail&aid=9410&group_id=426&atid=1698 > > Cheers, > Daniel Azuma > Chief Architect, Zoodango.com > > -- > Posted via http://www.ruby-forum.com/. >