diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-06-07 16:02:30 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-06-07 16:02:30 +0900 |
| commit | 55dcdd26cce990951be3717e086d2c80f5058b74 (patch) | |
| tree | 88895a14b5900c0b481571930c7a85092b221f0c | |
| parent | 778500563a9f7ceba996937dc886bd8cde29b42b (diff) | |
| parent | 1dbeda5c9cfe60b0dbdf94a8fea7e12a721ff162 (diff) | |
| download | mruby-55dcdd26cce990951be3717e086d2c80f5058b74.tar.gz mruby-55dcdd26cce990951be3717e086d2c80f5058b74.zip | |
Merge pull request #4039 from i110/i110/fix-broken-lexical-variables
fix broken lexical variables
| -rw-r--r-- | mrbgems/mruby-eval/test/eval.rb | 16 | ||||
| -rw-r--r-- | src/vm.c | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/mrbgems/mruby-eval/test/eval.rb b/mrbgems/mruby-eval/test/eval.rb index 66ca1fcdb..be43412f7 100644 --- a/mrbgems/mruby-eval/test/eval.rb +++ b/mrbgems/mruby-eval/test/eval.rb @@ -99,3 +99,19 @@ assert('Object#instance_eval with begin-rescue-ensure execution order') do hell_raiser = HellRaiser.new assert_equal([:enter_raise_hell, :begin, :rescue, :ensure], hell_raiser.raise_hell) end + +assert('Kernel.#eval(strinng) Issue #4021') do + assert_equal('FOO') { (eval <<'EOS').call } +foo = "FOO" +Proc.new { foo } +EOS + assert_equal('FOO') { + def do_eval(code) + eval(code) + end + do_eval(<<'EOS').call +foo = "FOO" +Proc.new { foo } +EOS + } +end @@ -528,8 +528,6 @@ mrb_exec_irep(mrb_state *mrb, mrb_value self, struct RProc *p) return MRB_PROC_CFUNC(p)(mrb, self); } ci->nregs = p->body.irep->nregs; - ci->env = MRB_PROC_ENV(p); - if (ci->env) ci->env->stack[0] = self; if (ci->argc < 0) keep = 3; else keep = ci->argc + 2; if (ci->nregs < keep) { |
