Fix warning when doing Struct.new(:x, keyword_init: true){}

This is due to calling rb_mod_module_eval directly instead of using
rb_funcall_passing_block.

The problem with calling directly is it does not create a new VM
frame, so rb_mod_module_eval was called with no arguments, but with
the keyword given VM frame flag set, which causes problems
internally.
This commit is contained in:
Jeremy Evans 2019-09-27 08:07:49 -07:00
parent 7814b6c657
commit d53cf85474
Notes: git 2019-09-28 03:22:42 +09:00
2 changed files with 11 additions and 1 deletions

View file

@ -569,7 +569,7 @@ rb_struct_s_def(int argc, VALUE *argv, VALUE klass)
setup_struct(st, rest);
rb_ivar_set(st, id_keyword_init, keyword_init);
if (rb_block_given_p()) {
rb_mod_module_eval(0, 0, st);
rb_funcall_passing_block(st, rb_intern("module_eval"), 0, 0);
}
return st;