diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-01-02 22:01:00 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-01-02 22:01:00 +0900 |
| commit | aa1f668b80617bca1cfa204d18404a883c04c927 (patch) | |
| tree | 4981db320fc5fefc42276bc2c24ffdfe4cd34bb1 /src | |
| parent | 879e27d0f171d4ab652099b47a9a626e3a2508c3 (diff) | |
| download | mruby-aa1f668b80617bca1cfa204d18404a883c04c927.tar.gz mruby-aa1f668b80617bca1cfa204d18404a883c04c927.zip | |
instance_eval should pass the receiver as a block parameter; close #3029
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -510,11 +510,13 @@ eval_under(mrb_state *mrb, mrb_value self, mrb_value blk, struct RClass *c) } ci = mrb->c->ci; if (ci->acc == CI_ACC_DIRECT) { - return mrb_yield_with_class(mrb, blk, 0, 0, self, c); + return mrb_yield_with_class(mrb, blk, 1, &self, self, c); } ci->target_class = c; p = mrb_proc_ptr(blk); ci->proc = p; + ci->argc = 1; + mrb->c->stack[1] = self; if (MRB_PROC_CFUNC_P(p)) { return p->body.func(mrb, self); } |
