Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Bug in Bignum.to_s (1.8.6 only
Daniel Azuma
3/31/2007 5:28:00 PM
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&...
Cheers,
Daniel Azuma
Chief Architect, Zoodango.com
--
Posted via
http://www.ruby-...
.
2 Answers
Bernard Kenik
3/31/2007 9:44:00 PM
0
On Mar 31, 1:27 pm, Daniel Azuma <daz...@gmail.com> wrote:
> 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...
...
>
> Cheers,
> Daniel Azuma
> Chief Architect, Zoodango.com
>
> --
> Posted via
http://www.ruby-...
.
I have verified that the bignum bug you described also occurs in ruby
1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
C:\Documents and Settings\Owner>irb
irb(main):001:0> 18446744073709551615.to_s
=> "18446744073709551615"
irb(main):002:0> 18446744073709551615.to_s(32)
=> "vvvvvvvvvvvv"
irb(main):003:0> 18446744073709551616.to_s(32)
=> "g000000000000"
irb(main):004:0> 18446744073709551615.to_s(36)
=> "w5e11264sgsf"
irb(main):005:0> 18446744073709551616.to_s(36)
=> "3w5e11264sgsg"
irb(main):006:0> 18446744073709551615.to_s(31)
=> "nd075ib45k86f"
irb(main):007:0> 18446744073709551616.to_s(31)
=> "nd075ib45k86g"
Daniel Azuma
4/1/2007 1:46:00 AM
0
bbiker wrote:
> I have verified that the bignum bug you described also occurs in ruby
> 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
Actually, to clarify, the 1.8.6 releases are the ONLY released version
I'm aware of that exhibits the bug. (1.8.5 and earlier do not appear to
be affected, so far as I know.) But thanks for verifying. :-)
Daniel
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Bug in Bignum.to_s (1.8.6 only
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password