diff options
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-eval/src/eval.c | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-fiber/src/fiber.c | 6 |
3 files changed, 7 insertions, 6 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 4a77fb8fb..e790e6dfc 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2583,7 +2583,8 @@ codegen(codegen_scope *s, node *tree, int val) genop(s, MKOP_ABx(OP_LOADSYM, cursp(), b)); push(); genop(s, MKOP_A(OP_LOADNIL, cursp())); - pop_n(3); + push(); + pop_n(4); genop(s, MKOP_ABC(OP_SEND, cursp(), c, 2)); if (val) { push(); diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 5e8952f0d..00cb2f15c 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -30,7 +30,7 @@ get_closure_irep(mrb_state *mrb, int level) if (!e) return NULL; if (!MRB_ENV_STACK_SHARED_P(e)) return NULL; - + c = e->cxt.c; proc = c->cibase[e->cioff].proc; if (!proc || MRB_PROC_CFUNC_P(proc)) { @@ -196,7 +196,7 @@ create_proc_from_string(mrb_state *mrb, char *s, int len, mrb_value binding, con e = c->ci[-1].proc->env; if (!e) e = c->ci[-1].env; e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV, (struct RClass*)e); - e->mid = c->ci[-1].mid; + e->cxt.c = c; e->cioff = c->ci - c->cibase - 1; e->stack = c->ci->stackent; MRB_SET_ENV_STACK_LEN(e, c->ci[-1].proc->body.irep->nlocals); diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index b9d4ccdcc..bd1d09d43 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -82,9 +82,9 @@ fiber_init(mrb_state *mrb, mrb_value self) mrb_raise(mrb, E_FIBER_ERROR, "tried to create Fiber from C defined method"); } - f->cxt = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context)); - *f->cxt = mrb_context_zero; - c = f->cxt; + c = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context)); + *c = mrb_context_zero; + f->cxt = c; /* initialize VM stack */ slen = FIBER_STACK_INIT_SIZE; |
