Project

General

Profile

Actions

Bug #1883

closed

REXML hash sometimes computes a value that is too large

Added by panesofglass (Ryan Riley) over 14 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
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
Actions #1

Updated by nobu (Nobuyoshi Nakada) over 14 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

Actions #2

Updated by tmat (Tomas Matousek) over 14 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 into long' (RangeError)

=end

Actions #3

Updated by nobu (Nobuyoshi Nakada) over 14 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 into long' (RangeError)

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

--
Nobu Nakada

=end

Updated by zenspider (Ryan Davis) about 13 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) over 12 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.

Actions #6

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

  • Project changed from Backport186 to Ruby master
  • Description updated (diff)
  • Status changed from Open to Closed
  • Backport set to 2.5: UNKNOWN, 2.6: UNKNOWN
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0