aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/lib/active_support/core_ext/time/marshal_with_utc_flag.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/core_ext/time/marshal_with_utc_flag.rb b/activesupport/lib/active_support/core_ext/time/marshal_with_utc_flag.rb
index 9de8157eb0..656939947c 100644
--- a/activesupport/lib/active_support/core_ext/time/marshal_with_utc_flag.rb
+++ b/activesupport/lib/active_support/core_ext/time/marshal_with_utc_flag.rb
@@ -7,14 +7,20 @@ if RUBY_VERSION < '1.9'
alias_method :_original_load, :_load
def _load(marshaled_time)
time = _original_load(marshaled_time)
- utc = time.instance_variable_get('@marshal_with_utc_coercion')
- utc ? time.utc : time
+ time.instance_eval do
+ if defined?(@marshal_with_utc_coercion)
+ remove_instance_variable("@marshal_with_utc_coercion")
+ utc
+ else
+ self
+ end
+ end
end
end
alias_method :_original_dump, :_dump
def _dump(*args)
- obj = frozen? ? dup : self
+ obj = dup
obj.instance_variable_set('@marshal_with_utc_coercion', utc?)
obj._original_dump(*args)
end