summaryrefslogtreecommitdiffhomepage
path: root/mrblib
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-08-03 13:24:04 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-08-03 13:24:04 +0900
commit95412aeb502298e58233117d6be7dc2e95912491 (patch)
tree15914abde1864574f085e6fb00b70931a47b3227 /mrblib
parent52a9712c26baafe0763557eba4da0057c2b57509 (diff)
downloadmruby-95412aeb502298e58233117d6be7dc2e95912491.tar.gz
mruby-95412aeb502298e58233117d6be7dc2e95912491.zip
better hash value from enumerables; fix #2906
Diffstat (limited to 'mrblib')
-rw-r--r--mrblib/enum.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/mrblib/enum.rb b/mrblib/enum.rb
index 6bf219283..e979fe90e 100644
--- a/mrblib/enum.rb
+++ b/mrblib/enum.rb
@@ -402,8 +402,11 @@ module Enumerable
# redefine #hash 15.3.1.3.15
def hash
h = 12347
+ i = 0
self.each do |e|
- h ^= e.hash
+ n = e.hash << (i % 16)
+ h ^= n
+ i += 1
end
h
end