Project

General

Profile

Actions

Bug #8204

closed

ObjectSpace.each_object(Bignum) can generate Bignums that are to small to be Bignums

Added by Hanmac (Hans Mackowiak) about 11 years ago. Updated about 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.1.0dev (2013-04-02 trunk 40068) [x86_64-linux]
Backport:
[ruby-core:53893]

Description

when i do:

p ObjectSpace.each_object(Bignum).to_a
=> [18446744073709551615, 3, 2394213621560389257607583714845333205]
and again:
ObjectSpace.each_object(Bignum).to_a
=> [18446744073709551615, 3, 63326588221939058800767348888534802301, 0, 0, 0]

my question: why does the 3 and the zeros show up?

n = ObjectSpace.each_object(Bignum).min #=> 0
p n.class #Bignum
p n.zero? #=> false
p n < 0 # true

okay this means i have a zero, that looks like zero, but is not a zero and its class is Bignum

(but when i try in a new ruby session)

(2**64) < 0;
p bigZero = ObjectSpace.each_object(Bignum).min #=> 0
p bigZero.class #Bignum
p bigZero.zero? #=> true

okay, this time i get a zero that looks like a zero, and react like a zero, but its still a Bignum

so where does the zeros come from and why does they react so totaly different?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0