From ce9456eca0c4ea77a42aaad5e8080842c1c01422 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Fri, 26 Nov 2010 11:55:56 +0100
Subject: Only convert direct hash instances in hash with indifferent access.

---
 activesupport/lib/active_support/hash_with_indifferent_access.rb | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

(limited to 'activesupport/lib')

diff --git a/activesupport/lib/active_support/hash_with_indifferent_access.rb b/activesupport/lib/active_support/hash_with_indifferent_access.rb
index 320f5c1c92..6a344867ee 100644
--- a/activesupport/lib/active_support/hash_with_indifferent_access.rb
+++ b/activesupport/lib/active_support/hash_with_indifferent_access.rb
@@ -140,11 +140,10 @@ module ActiveSupport
       end
 
       def convert_value(value)
-        case value
-        when Hash
+        if value.class == Hash
           self.class.new_from_hash_copying_default(value)
-        when Array
-          value.dup.replace(value.collect { |e| e.is_a?(Hash) ? self.class.new_from_hash_copying_default(e) : e })
+        elsif value.is_a?(Array)
+          value.dup.replace(value.map { |e| convert_value(e) })
         else
           value
         end
-- 
cgit v1.2.3