diff --git a/re.c b/re.c index 020ba7b6d6..55b39bfdea 100644 --- a/re.c +++ b/re.c @@ -2944,7 +2944,9 @@ rb_reg_init_str_enc(VALUE re, VALUE s, rb_encoding *enc, int options) MJIT_FUNC_EXPORTED VALUE rb_reg_new_ary(VALUE ary, int opt) { - return rb_reg_new_str(rb_reg_preprocess_dregexp(ary, opt), opt); + VALUE re = rb_reg_new_str(rb_reg_preprocess_dregexp(ary, opt), opt); + rb_obj_freeze(re); + return re; } VALUE diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index 0cba377db2..ea31804fb0 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -125,6 +125,7 @@ module Test filter = /\A(?=.*#{filter})(?!.*#{negative})/ end if Regexp === filter + filter = filter.dup # bypass conversion in minitest def filter.=~(other) # :nodoc: super unless Regexp === other