summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorksss <[email protected]>2016-08-08 10:10:17 +0900
committerksss <[email protected]>2016-08-08 12:41:19 +0900
commitada264a513eabf2f44141a3369ba77576056e0f6 (patch)
treef1800a21befdc9afb2064122d2b4c241f79f68b5
parent501e1ef2605541b98b6f0d2ba2fec69ff068f1cf (diff)
downloadmruby-ada264a513eabf2f44141a3369ba77576056e0f6.tar.gz
mruby-ada264a513eabf2f44141a3369ba77576056e0f6.zip
instance_eval env should remake Fix #3191
-rw-r--r--mrbgems/mruby-eval/src/eval.c1
-rw-r--r--mrbgems/mruby-eval/test/eval.rb2
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