From 03e7997fd0f231334c8fb8ce0af1ef6f4161351a Mon Sep 17 00:00:00 2001 From: Max Schwenk Date: Thu, 20 Sep 2018 21:47:05 -0700 Subject: [PATCH 1/2] Don't mutated passed options --- ext/redcarpet/rc_markdown.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/redcarpet/rc_markdown.c b/ext/redcarpet/rc_markdown.c index 905148e7..df016fbb 100644 --- a/ext/redcarpet/rc_markdown.c +++ b/ext/redcarpet/rc_markdown.c @@ -115,8 +115,8 @@ static VALUE rb_redcarpet_md__new(int argc, VALUE *argv, VALUE klass) /* Merge the current options in the @options hash */ if (hash != Qnil) { - rndr_options = rb_iv_get(rb_rndr, "@options"); - rb_funcall(rndr_options, rb_intern("merge!"), 1, hash); + rndr_options = rb_funcall(rb_iv_get(rb_rndr, "@options"), rb_intern("merge"), 1, hash); + rb_iv_set(rb_rndr, "@options", rndr_options); } markdown = sd_markdown_new(extensions, 16, &rndr->callbacks, &rndr->options); From fc52d9c5950fd89bcb63f644b436c6d38a62cc09 Mon Sep 17 00:00:00 2001 From: Max Schwenk Date: Thu, 20 Sep 2018 22:04:33 -0700 Subject: [PATCH 2/2] Add regression test --- test/custom_render_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/custom_render_test.rb b/test/custom_render_test.rb index 61e2256a..5f73c085 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)) + parser = Redcarpet::Markdown.new(SimpleRender.new({ with_toc_data: true }.freeze), {}) output = parser.render("# A title") assert_match "My little poney", output