diff options
| -rw-r--r-- | include/mruby/compile.h | 1 | ||||
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/mruby/compile.h b/include/mruby/compile.h index 69dfd1d50..69ba95f33 100644 --- a/include/mruby/compile.h +++ b/include/mruby/compile.h @@ -42,6 +42,7 @@ MRB_API mrbc_context* mrbc_context_new(mrb_state *mrb); MRB_API void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt); MRB_API const char *mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s); MRB_API void mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*partial_hook)(struct mrb_parser_state*), void*data); +MRB_API void mrbc_cleanup_local_variables(mrb_state *mrb, mrbc_context *c); /* AST node structure */ typedef struct mrb_ast_node { diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 0a5eb2a7b..c35d9e1be 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -6303,6 +6303,16 @@ mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser } MRB_API void +mrbc_cleanup_local_variables(mrb_state *mrb, mrbc_context *c) +{ + if (c->syms) { + mrb_free(mrb, c->syms); + c->syms = NULL; + c->slen = 0; + } +} + +MRB_API void mrb_parser_set_filename(struct mrb_parser_state *p, const char *f) { mrb_sym sym; |
