Project

General

Profile

Bug #1883

REXML hash sometimes computes a value that is too large

Added by panesofglass (Ryan Riley) about 10 years ago. Updated about 8 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
ruby -v:
1.8.6p287
[ruby-core:24754]

Description

=begin
The hash method sometimes computes a value that is too large. This is a rare occurrence in MRI, but this is causing problems for IronRuby. The following patch is suggested for computing smaller hashes:

edit: c:/ruby/libs/ruby/1.8/rexml/attribute.rb;C908357
File: attribute.rb
===================================================================
--- c:/ruby/libs/ruby/1.8/rexml/attribute.rb;C908357 (server) 6/23/2009 1:24 PM
+++ c:/ruby/libs/ruby/1.8/rexml/attribute.rb
@@ -93,7 +93,7 @@

    # Creates (and returns) a hash from both the name and value
    def hash
  • name.hash + value.hash
  •      name.hash ^ value.hash
    end
    
    # Returns this attribute out as XML source, expanding the name
    

    ===================================================================
    =end


Files

rexml-hash.patch (576 Bytes) rexml-hash.patch REXML hash patch panesofglass (Ryan Riley), 08/05/2009 03:24 AM

History

#1

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

=begin
Hi,

At Wed, 5 Aug 2009 03:24:49 +0900,
Ryan Riley wrote in [ruby-core:24754]:

The hash method sometimes computes a value that is too
large. This is a rare occurrence in MRI, but this is causing
problems for IronRuby. The following patch is suggested for
computing smaller hashes:

What problems?

--
Nobu Nakada

=end

#2

Updated by tmat (Tomas Matousek) about 10 years ago

=begin
This is potential problem for MRI as well since Array#hash blows up if any item's hash is not a Fixnum:

class C
def hash
100000000000000000000
end
end

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

=end

#3

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

=begin
Hi,

At Wed, 5 Aug 2009 04:43:31 +0900,
Tomas Matousek wrote in [ruby-core:24758]:

This is potential problem for MRI as well since Array#hash blows up if any item's hash is not a Fixnum:

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

It's been fixed in r22308, and should be backported to 1.8.

--
Nobu Nakada

=end

Updated by zenspider (Ryan Davis) over 8 years ago

=begin
I believe this patch was backported to ruby 1.8... so shouldn't this ticket be closed?
=end

Updated by headius (Charles Nutter) about 8 years ago

This does not appear to have been backported to ruby_1_8_7 branch, so we have gotten recent reports about it being a bug in JRuby. Is it possible to get this tiny patch backported to ruby_1_8_7, so we can pull the change into our patched stdlib at https://github.com/jruby/ruby/tree/jruby-ruby_1_8_7 ?

I'd rather not apply the patch unilaterally, but this is a visible bug that needs fixing.

Also available in: Atom PDF