aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillermo Iguaran <guilleiguaran@gmail.com>2013-08-19 11:56:56 -0700
committerGuillermo Iguaran <guilleiguaran@gmail.com>2013-08-19 11:56:56 -0700
commitad71004f02b0e6645dca586dd31d645ca6f6c241 (patch)
tree569fcad510dfd2e3efae0e4b849eb3c89ee2cb1d
parent55360ddf7fd5f3fedc327476bf07aac3ba698e0d (diff)
parentdfb923e6e52d1fed768672b5b7e6277a599f136a (diff)
downloadrails-ad71004f02b0e6645dca586dd31d645ca6f6c241.tar.gz
rails-ad71004f02b0e6645dca586dd31d645ca6f6c241.tar.bz2
rails-ad71004f02b0e6645dca586dd31d645ca6f6c241.zip
Merge pull request #11940 from baroquebobcat/thread_var_patch_freeze
ensure freeze on Thread freezes locals (#11831)
-rw-r--r--activesupport/lib/active_support/core_ext/thread.rb5
-rw-r--r--activesupport/test/core_ext/thread_test.rb9
2 files changed, 14 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/thread.rb b/activesupport/lib/active_support/core_ext/thread.rb
index 878ec73ef0..e80f442973 100644
--- a/activesupport/lib/active_support/core_ext/thread.rb
+++ b/activesupport/lib/active_support/core_ext/thread.rb
@@ -62,6 +62,11 @@ class Thread
_locals.has_key?(key.to_sym)
end
+ def freeze
+ _locals.freeze
+ super
+ end
+
private
def _locals
diff --git a/activesupport/test/core_ext/thread_test.rb b/activesupport/test/core_ext/thread_test.rb
index 230c1203ad..cf1b48d511 100644
--- a/activesupport/test/core_ext/thread_test.rb
+++ b/activesupport/test/core_ext/thread_test.rb
@@ -63,6 +63,15 @@ class ThreadExt < ActiveSupport::TestCase
end
end
+ def test_thread_variable_frozen_after_set
+ t = Thread.new { }.join
+ t.thread_variable_set :foo, "bar"
+ t.freeze
+ assert_raises(RuntimeError) do
+ t.thread_variable_set(:baz, "qux")
+ end
+ end
+
def test_thread_variable_security
t = Thread.new { sleep }