diff --git a/CHANGELOG.md b/CHANGELOG.md index eafa26d6..0cedddf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +* Avoid mutating the options hash passed to a render object. + + Refs #663. + + *Max Schwenk* + * Fix a segfault rendering quotes using `StripDown` and the `:quote` option. diff --git a/test/custom_render_test.rb b/test/custom_render_test.rb index 5f73c085..87c9f07c 100644 --- a/test/custom_render_test.rb +++ b/test/custom_render_test.rb @@ -23,7 +23,7 @@ def test_simple_overload end def test_renderer_options - parser = Redcarpet::Markdown.new(SimpleRender.new({ with_toc_data: true }.freeze), {}) + parser = Redcarpet::Markdown.new(SimpleRender.new(with_toc_data: true)) output = parser.render("# A title") assert_match "My little poney", output @@ -36,6 +36,16 @@ def test_markdown_options assert_match "no_intra_emphasis", output end + def test_original_options_hash_is_not_mutated + options = { with_toc_data: true } + render = SimpleRender.new(options) + parser = Redcarpet::Markdown.new(render, tables: true) + + computed_options = render.instance_variable_get(:"@options") + + refute_equal computed_options.object_id, options.object_id + end + class NilPreprocessRenderer < Redcarpet::Render::HTML def preprocess(fulldoc) nil