summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 14:13:54 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 14:13:54 +0900
commited16535c73b9eb763e445e23489e7a73144f6f09 (patch)
tree658045a5ee76e6dd24b48577e3e798efbbb31551 /src
parentf88cb8807343c91c2fbad486aa6b09ccee0b9643 (diff)
downloadmruby-ed16535c73b9eb763e445e23489e7a73144f6f09.tar.gz
mruby-ed16535c73b9eb763e445e23489e7a73144f6f09.zip
Clear top level env in `mrb_top_run()`; fix #3643
Diffstat (limited to 'src')
-rw-r--r--src/vm.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 4d7fc9720..23e20b826 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -2740,7 +2740,11 @@ mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int sta
mrb_callinfo *ci;
mrb_value v;
- if (!mrb->c->cibase || mrb->c->ci == mrb->c->cibase) {
+ if (!mrb->c->cibase) {
+ return mrb_vm_run(mrb, proc, self, stack_keep);
+ }
+ if (mrb->c->ci == mrb->c->cibase) {
+ mrb->c->ci->env = NULL;
return mrb_vm_run(mrb, proc, self, stack_keep);
}
ci = cipush(mrb);