diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-21 18:24:26 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-21 18:24:26 +0900 |
| commit | 45e04c996e101d39564ca5670be1f297281130f9 (patch) | |
| tree | 1b4525eed77e672980d83d604f316e6a3d56b730 | |
| parent | 9f25e3f3beac4b5fd3d01ea1adaad00e5d4e43f5 (diff) | |
| download | mruby-45e04c996e101d39564ca5670be1f297281130f9.tar.gz mruby-45e04c996e101d39564ca5670be1f297281130f9.zip | |
clear local variables for the first execution of mrb_context_run(); close #2405
| -rw-r--r-- | include/mruby/compile.h | 1 | ||||
| -rw-r--r-- | src/parse.y | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/include/mruby/compile.h b/include/mruby/compile.h index 7f896e1fd..188df315d 100644 --- a/include/mruby/compile.h +++ b/include/mruby/compile.h @@ -28,6 +28,7 @@ typedef struct mrbc_context { mrb_bool capture_errors:1; mrb_bool dump_result:1; mrb_bool no_exec:1; + mrb_bool keep_lv:1; } mrbc_context; mrbc_context* mrbc_context_new(mrb_state *mrb); diff --git a/src/parse.y b/src/parse.y index 2c7e788d9..043c86776 100644 --- a/src/parse.y +++ b/src/parse.y @@ -5558,7 +5558,12 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c) if (c->target_class) { target = c->target_class; } - keep = c->slen + 1; + if (c->keep_lv) { + keep = c->slen + 1; + } + else { + c->keep_lv = TRUE; + } } proc->target_class = target; if (mrb->c->ci) { |
