summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-08 18:25:01 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-08 18:25:01 +0000
commit5d4d154553d4c19e3ee9a526148eb615cb2c2d79 (patch)
tree5aeb3ccdac988886f0d3c270eb46721639734f34
parent9ec903b6c89ffe7bbb4ddf1c2b5d22965d6adf9c (diff)
* hash.c (hash_i): make Hash#hash order insensitive.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@17031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--hash.c1
-rw-r--r--test/ruby/test_hash.rb3
-rw-r--r--version.h2
4 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 15c0ec1594..2d6cb32e95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jun 9 03:24:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (hash_i): make Hash#hash order insensitive.
+
Mon Jun 9 03:22:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (VENDOR_DIR): use LIBDIR instead of PREFIX as well as
diff --git a/hash.c b/hash.c
index 55e2d0a819..3f269becb5 100644
--- a/hash.c
+++ b/hash.c
@@ -1602,7 +1602,6 @@ hash_i(key, val, hval)
{
if (key == Qundef) return ST_CONTINUE;
*hval ^= rb_hash(key);
- *hval *= 137;
*hval ^= rb_hash(val);
return ST_CONTINUE;
}
diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index 38d72f701b..4131a6bdd3 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -635,4 +635,7 @@ class TestHash < Test::Unit::TestCase
assert_equal([], expected - vals)
end
+ def test_hash_hash
+ assert_equal({0=>2,11=>1}.hash, {11=>1,0=>2}.hash)
+ end
end
diff --git a/version.h b/version.h
index 1074af61c1..93d3eda8b5 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2008-06-09"
#define RUBY_VERSION_CODE 187
#define RUBY_RELEASE_CODE 20080609
-#define RUBY_PATCHLEVEL 13
+#define RUBY_PATCHLEVEL 14
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8