diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-08-31 23:15:42 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-08-31 23:15:42 +0900 |
| commit | bf0893586aab8f9a128a8049e2554fb290b50c69 (patch) | |
| tree | 49b43abd8d7d74ecb1d77833deb81d235cdde5ec | |
| parent | b3236b2a71f6c515b0fe5cc848de1c5bd210d0e7 (diff) | |
| parent | ada264a513eabf2f44141a3369ba77576056e0f6 (diff) | |
| download | mruby-bf0893586aab8f9a128a8049e2554fb290b50c69.tar.gz mruby-bf0893586aab8f9a128a8049e2554fb290b50c69.zip | |
Merge pull request #3192 from ksss/instance_eval
instance_eval env should remake Fix #3191
| -rw-r--r-- | mrbgems/mruby-eval/src/eval.c | 1 | ||||
| -rw-r--r-- | mrbgems/mruby-eval/test/eval.rb | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c index 283b3f687..e39d32ab8 100644 --- a/mrbgems/mruby-eval/src/eval.c +++ b/mrbgems/mruby-eval/src/eval.c @@ -247,6 +247,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self) cv = mrb_singleton_class(mrb, self); c->ci->target_class = mrb_class_ptr(cv); proc = create_proc_from_string(mrb, s, len, mrb_nil_value(), file, line); + mrb->c->ci->env = NULL; return mrb_vm_run(mrb, proc, mrb->c->stack[0], 0); } else { diff --git a/mrbgems/mruby-eval/test/eval.rb b/mrbgems/mruby-eval/test/eval.rb index 17860b132..66ca1fcdb 100644 --- a/mrbgems/mruby-eval/test/eval.rb +++ b/mrbgems/mruby-eval/test/eval.rb @@ -64,6 +64,8 @@ assert('String instance_eval') do assert_equal(['test.rb', 10]) { obj.instance_eval('[__FILE__, __LINE__]', 'test.rb', 10)} assert_equal('test') { obj.instance_eval('@test') } assert_equal('test') { obj.instance_eval { @test } } + o = Object.new + assert_equal ['', o, o], o.instance_eval("[''].each { |s| break [s, o, self] }") end assert('Kernel.#eval(string) context') do |
