aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-07-29 10:32:24 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2011-07-29 10:32:24 -0700
commit3e8fe1d8984b78e47ec0702687b14eba13dc486e (patch)
tree418a3b25da0ac251edf89876283a252821ba1dcf
parentbbe1b1afcef0813883d80e60a0d9dd93f778e6e2 (diff)
parent6ef1079e0ed093e54a0e1dc9cb3b97d5e1330caf (diff)
downloadrails-3e8fe1d8984b78e47ec0702687b14eba13dc486e.tar.gz
rails-3e8fe1d8984b78e47ec0702687b14eba13dc486e.tar.bz2
rails-3e8fe1d8984b78e47ec0702687b14eba13dc486e.zip
Merge pull request #2344 from bcardarella/resolve_warning_for_capture_helper_test
Reset @dirty to false when slicing an instance of SafeBuffer
-rw-r--r--activesupport/lib/active_support/core_ext/string/output_safety.rb6
-rw-r--r--activesupport/test/safe_buffer_test.rb6
2 files changed, 12 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/string/output_safety.rb b/activesupport/lib/active_support/core_ext/string/output_safety.rb
index 3bf4edbdef..6d6c4912bb 100644
--- a/activesupport/lib/active_support/core_ext/string/output_safety.rb
+++ b/activesupport/lib/active_support/core_ext/string/output_safety.rb
@@ -86,6 +86,12 @@ module ActiveSupport #:nodoc:
end
end
+ def[](*args)
+ new_safe_buffer = super
+ new_safe_buffer.instance_eval { @dirty = false }
+ new_safe_buffer
+ end
+
def safe_concat(value)
raise SafeConcatError if dirty?
original_concat(value)
diff --git a/activesupport/test/safe_buffer_test.rb b/activesupport/test/safe_buffer_test.rb
index 7662e9b765..8f77999d25 100644
--- a/activesupport/test/safe_buffer_test.rb
+++ b/activesupport/test/safe_buffer_test.rb
@@ -106,4 +106,10 @@ class SafeBufferTest < ActiveSupport::TestCase
test "should not fail if the returned object is not a string" do
assert_kind_of NilClass, @buffer.slice("chipchop")
end
+
+ test "Should initialize @dirty to false for new instance when sliced" do
+ dirty = @buffer[0,0].send(:dirty?)
+ assert_not_nil dirty
+ assert !dirty
+ end
end