Forum: IronRuby Code Review: HashFixes

Posted by Tomas Matousek (Guest)
on 2009-06-23 22:41
Attachment: HashFixes.diff (2,56 KB)
(Received via mailing list)
tfpt review "/shelveset:HashFixes;REDMOND\tomat"

  Fixes implementation of hash methods in REXML and RubyGems. The 
current implementation is incorrect since it sums hash codes of 
subcomponents potentially overflowing to Bignum. This issue is mainly 
exposed when calculating hash of an array. Array#hash calculates its 
hash code by calling hash on each item and converting the result of the 
hash method into Fixnum. So if the result if the hash method is a Bignum 
an error is reported:

  class C
    def hash
      100000000000000000000
    end
  end

  [C.new].hash  # => in `hash': bignum too big to convert into `long' 
(RangeError)

Tomas
Posted by Jimmy Schementi (Guest)
on 2009-06-23 23:45
(Received via mailing list)
How are we going to make sure this gets back into REXML and RubyGems? We 
shouldn't ship significantly different versions of the Ruby stdlib, as 
people will expect to switch to any version of the stdlib without 
issues.

My first thought is to have someone in the community step up to propose 
these changes to RubyGems and REXML for us, and get them checked in. 
Anyone interested?

~js
Posted by Jimmy Schementi (Guest)
on 2009-07-01 09:09
(Received via mailing list)
No takers? I've documented this at 
http://ironruby.net/Documentation/Ruby_Standard_Library/Modifications so 
if anyone wants to bite the info is there.

~js
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.