summaryrefslogtreecommitdiff
path: root/struct.c
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-27 08:07:49 -0700
committerJeremy Evans <code@jeremyevans.net>2019-09-27 11:22:21 -0700
commitd53cf854741bbf496298c5a722988d2dd84314a1 (patch)
tree9d2d8ee45b9c4bff636be7bfb993d9bb507ac0c4 /struct.c
parent7814b6c6572446a6b64614e524d13dd423577004 (diff)
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.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2500
Diffstat (limited to 'struct.c')
-rw-r--r--struct.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/struct.c b/struct.c
index de40701d4e..3a631ab189 100644
--- a/struct.c
+++ b/struct.c
@@ -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;