From 48c7975cdcb0bca978102f88a2cf1c2b3a401a61 Mon Sep 17 00:00:00 2001 From: Andrew Weiss Date: Thu, 14 Sep 2017 15:22:05 -0700 Subject: [PATCH] any extra that we are passed we should dup --- lib/rollbar/notifier.rb | 2 +- lib/rollbar/util.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/rollbar/notifier.rb b/lib/rollbar/notifier.rb index ba100d24..d9d8625e 100644 --- a/lib/rollbar/notifier.rb +++ b/lib/rollbar/notifier.rb @@ -337,7 +337,7 @@ def extract_arguments(args) end end - [message, exception, extra] + [message, exception, Rollbar::Util.deep_dup(extra)] end def lookup_exception_level(orig_level, exception, use_exception_level_filters) diff --git a/lib/rollbar/util.rb b/lib/rollbar/util.rb index 60871ada..e42f1a0d 100644 --- a/lib/rollbar/util.rb +++ b/lib/rollbar/util.rb @@ -62,6 +62,21 @@ def self.deep_copy(obj) end end + def self.deep_dup(obj) + if obj.is_a?(::Hash) + result = obj.dup + obj.each { |k, v| result[k] = deep_dup(v)} + result + elsif obj.is_a?(Array) + result = obj.dup + result.clear + obj.each { |v| result << deep_dup(v)} + result + else + obj.dup + end + end + def self.deep_merge(hash1, hash2) hash1 ||= {} hash2 ||= {}