From b8ab6af39d092fab099932877e2eb0f9676bfce6 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 4 Apr 2014 10:54:46 +0900 Subject: protect NoMethodError from calling to_hash in ==/eql?; close #2002 --- mrblib/hash.rb | 12 ++++++++++-- 1 file 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) -- cgit v1.2.3