diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-09-05 13:02:32 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-09-05 13:02:32 +0900 |
| commit | 495545ab09c2f89c85855ee46cf172a3fb95f658 (patch) | |
| tree | 6bdb107ea50e3a9182e6d655ee42434e16fd80da | |
| parent | bf0893586aab8f9a128a8049e2554fb290b50c69 (diff) | |
| parent | 068b46d5e2d3c17db9f48b94f217bf9237ed92bc (diff) | |
| download | mruby-495545ab09c2f89c85855ee46cf172a3fb95f658.tar.gz mruby-495545ab09c2f89c85855ee46cf172a3fb95f658.zip | |
Merge pull request #3203 from nozomiS/mrbc_filename-fix
Fix mrbc_filename leak
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 51a08a489..22d31a390 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -5540,6 +5540,7 @@ mrbc_context_new(mrb_state *mrb) MRB_API void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt) { + mrb_free(mrb, cxt->filename); mrb_free(mrb, cxt->syms); mrb_free(mrb, cxt); } @@ -5549,9 +5550,12 @@ mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s) { if (s) { int len = strlen(s); - char *p = (char *)mrb_alloca(mrb, len + 1); + char *p = (char *)mrb_malloc(mrb, len + 1); memcpy(p, s, len + 1); + if (c->filename) { + mrb_free(mrb, c->filename); + } c->filename = p; } return c->filename; |
