From c12e9afc97f4356bc20554d32861889680c5fdc1 Mon Sep 17 00:00:00 2001 From: Justin Burnham Date: Mon, 17 Feb 2014 11:46:55 -0800 Subject: PUP-1724 Don't modify the paramaters to deep_merge Instead of modifying the first paramater of deep_merge due to the use of the merge! function, instead use merge to return a copy of the merged object. This allows one to continue to use the original first parameter after the call to deep_merge. --- lib/puppet/parser/functions/deep_merge.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/functions/deep_merge.rb b/lib/puppet/parser/functions/deep_merge.rb index 94677b8..6df32e9 100644 --- a/lib/puppet/parser/functions/deep_merge.rb +++ b/lib/puppet/parser/functions/deep_merge.rb @@ -20,7 +20,7 @@ module Puppet::Parser::Functions end deep_merge = Proc.new do |hash1,hash2| - hash1.merge!(hash2) do |key,old_value,new_value| + hash1.merge(hash2) do |key,old_value,new_value| if old_value.is_a?(Hash) && new_value.is_a?(Hash) deep_merge.call(old_value, new_value) else @@ -37,7 +37,7 @@ module Puppet::Parser::Functions raise Puppet::ParseError, "deep_merge: unexpected argument type #{arg.class}, only expects hash arguments" end - deep_merge.call(result, arg) + result = deep_merge.call(result, arg) end return( result ) end -- cgit v1.2.3