summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-class-ext/src
diff options
context:
space:
mode:
authorHiroshi Mimaki <[email protected]>2020-06-05 12:42:56 +0900
committerHiroshi Mimaki <[email protected]>2020-06-05 12:42:56 +0900
commit81d340e0421daf39a8208a0181d6a54e726db134 (patch)
tree18cefdd763a716dbd27c23bfdf98ffa2135f7624 /mrbgems/mruby-class-ext/src
parentf9d113f7647121f8578742a2a9ac256ece365e3f (diff)
parent4e40169ed6d200918e542aa8d8e64634794e1864 (diff)
downloadmruby-81d340e0421daf39a8208a0181d6a54e726db134.tar.gz
mruby-81d340e0421daf39a8208a0181d6a54e726db134.zip
Merge master.
Diffstat (limited to 'mrbgems/mruby-class-ext/src')
-rw-r--r--mrbgems/mruby-class-ext/src/class.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mrbgems/mruby-class-ext/src/class.c b/mrbgems/mruby-class-ext/src/class.c
index 02ebf80cc..b7b5e18f8 100644
--- a/mrbgems/mruby-class-ext/src/class.c
+++ b/mrbgems/mruby-class-ext/src/class.c
@@ -43,10 +43,15 @@ mrb_mod_module_exec(mrb_state *mrb, mrb_value self)
const mrb_value *argv;
mrb_int argc;
mrb_value blk;
+ struct RClass *c;
mrb_get_args(mrb, "*&!", &argv, &argc, &blk);
- mrb->c->ci->target_class = mrb_class_ptr(self);
+ c = mrb_class_ptr(self);
+ if (mrb->c->ci->acc < 0) {
+ return mrb_yield_with_class(mrb, blk, argc, argv, self, c);
+ }
+ mrb->c->ci->target_class = c;
return mrb_yield_cont(mrb, blk, self, argc, argv);
}