summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-04-21 15:44:21 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-04-21 15:44:21 +0900
commit61c6832b486ec4fc01353109c8c4085c88fa8f76 (patch)
treed771e782d606fbe779bd9069e1dd49494197e090 /src
parented0038fdf298750abeb9cf582f9576b3071e9411 (diff)
downloadmruby-61c6832b486ec4fc01353109c8c4085c88fa8f76.tar.gz
mruby-61c6832b486ec4fc01353109c8c4085c88fa8f76.zip
Fix the bug by `#instance_eval` called via a method object; fix #4973
The tranpoline code in 6a0b68f8b was wrong; reverted.
Diffstat (limited to 'src')
-rw-r--r--src/vm.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/vm.c b/src/vm.c
index bcd846025..f8f4609bf 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -648,8 +648,7 @@ eval_under(mrb_state *mrb, mrb_value self, mrb_value blk, struct RClass *c)
}
ci = mrb->c->ci;
if (ci->acc == CI_ACC_DIRECT) {
- ci->target_class = c;
- return mrb_yield_cont(mrb, blk, self, 1, &self);
+ return mrb_yield_with_class(mrb, blk, 1, &self, self, c);
}
ci->target_class = c;
p = mrb_proc_ptr(blk);