summaryrefslogtreecommitdiffhomepage
path: root/mrblib
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-04 10:54:46 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-04 10:54:46 +0900
commitb8ab6af39d092fab099932877e2eb0f9676bfce6 (patch)
tree8404fa98b894b20658e4dff68abaf84e65934548 /mrblib
parent28ab1062925b99118c0aa307e2c7d2a23fc0fc29 (diff)
downloadmruby-b8ab6af39d092fab099932877e2eb0f9676bfce6.tar.gz
mruby-b8ab6af39d092fab099932877e2eb0f9676bfce6.zip
protect NoMethodError from calling to_hash in ==/eql?; close #2002
Diffstat (limited to 'mrblib')
-rw-r--r--mrblib/hash.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/mrblib/hash.rb b/mrblib/hash.rb
index 1f2358a52..978fb367b 100644
--- a/mrblib/hash.rb
+++ b/mrblib/hash.rb
@@ -12,7 +12,11 @@ class Hash
# ISO 15.2.13.4.1
def == (hash)
return true if self.equal?(hash)
- hash = hash.to_hash
+ begin
+ hash = hash.to_hash
+ rescue NoMethodError
+ return false
+ end
return false if self.size != hash.size
self.each do |k,v|
return false unless hash.key?(k)
@@ -28,7 +32,11 @@ class Hash
# ISO 15.2.13.4.32 (x)
def eql?(hash)
return true if self.equal?(hash)
- hash = hash.to_hash
+ begin
+ hash = hash.to_hash
+ rescue NoMethodError
+ return false
+ end
return false if self.size != hash.size
self.each do |k,v|
return false unless hash.key?(k)