diff options
| -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) { |
