Permalink
Browse files

Make sure that we don't perform in-place mutation on SafeBuffer string

This will make sure `render :inline` is working.

Closes #1633
  • Loading branch information...
1 parent c4fbb21 commit 104e200a5e60908be144e7bba5b90725f1a115e0 @sikachu sikachu committed Jun 10, 2011
Showing with 8 additions and 0 deletions.
  1. +3 −0 actionpack/lib/action_view/template.rb
  2. +5 −0 actionpack/test/template/template_test.rb
View
3 actionpack/lib/action_view/template.rb
@@ -192,6 +192,9 @@ def compile(locals, view, mod)
locals_code = locals.keys.map! { |key| "#{key} = local_assigns[:#{key}];" }.join
if source.encoding_aware?
+ # Avoid performing in-place mutation for SafeBuffer
+ @source = source.to_str if source.html_safe?
+
# Look for # encoding: *. If we find one, we'll encode the
# String in that encoding, otherwise, we'll use the
# default external encoding.
View
5 actionpack/test/template/template_test.rb
@@ -128,5 +128,10 @@ def with_external_encoding(encoding)
ensure
Encoding.default_external = old
end
+
+ def test_render_inline_safebuffer_should_not_raise_error
+ @template = new_template("Hello".html_safe)
+ render
+ end
end
end

0 comments on commit 104e200

Please sign in to comment.