summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorksss <[email protected]>2014-03-07 11:08:24 +0900
committerksss <[email protected]>2014-03-07 11:08:24 +0900
commitcab1f734ef9a9eb6b31d792bfc818e5cb4f3b300 (patch)
tree07b9e610a9b0665ee2e7fc6deae6ddbe2f5c2e75
parente40428af7b02870663a6c052496c176c22c5e875 (diff)
downloadmruby-cab1f734ef9a9eb6b31d792bfc818e5cb4f3b300.tar.gz
mruby-cab1f734ef9a9eb6b31d792bfc818e5cb4f3b300.zip
Fix behavior Hash#eql?
-rw-r--r--src/hash.c2
-rw-r--r--test/t/hash.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c
index 9d7927bb9..1091ca643 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -901,7 +901,7 @@ hash_equal(mrb_state *mrb, mrb_value hash1, mrb_value hash2, mrb_bool eql)
key = kh_key(h1,k1);
k2 = kh_get(ht, mrb, h2, key);
if (k2 != kh_end(h2)) {
- if (mrb_equal(mrb, kh_value(h1,k1), kh_value(h2,k2))) {
+ if (mrb_eql(mrb, kh_value(h1,k1), kh_value(h2,k2))) {
continue; /* next key */
}
}
diff --git a/test/t/hash.rb b/test/t/hash.rb
index 837fe0216..92bc223b6 100644
--- a/test/t/hash.rb
+++ b/test/t/hash.rb
@@ -269,6 +269,14 @@ end
# Not ISO specified
+assert('Hash#eql?') do
+ a = { 'a' => 1, 'b' => 2, 'c' => 3 }
+ b = { 'a' => 1, 'b' => 2, 'c' => 3 }
+ c = { 'a' => 1.0, 'b' => 2, 'c' => 3 }
+ assert_true(a.eql?(b))
+ assert_false(a.eql?(c))
+end
+
assert('Hash#reject') do
h = {:one => 1, :two => 2, :three => 3, :four => 4}
ret = h.reject do |k,v|