mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fix early free of irep->filename
This commit is contained in:
+7
-1
@@ -2403,6 +2403,8 @@ scope_finish(codegen_scope *s)
|
||||
{
|
||||
mrb_state *mrb = s->mrb;
|
||||
mrb_irep *irep = s->irep;
|
||||
size_t fname_len;
|
||||
char *fname;
|
||||
|
||||
irep->flags = 0;
|
||||
if (s->iseq) {
|
||||
@@ -2418,7 +2420,11 @@ scope_finish(codegen_scope *s)
|
||||
irep->pool = (mrb_value *)codegen_realloc(s, irep->pool, sizeof(mrb_value)*irep->plen);
|
||||
irep->syms = (mrb_sym *)codegen_realloc(s, irep->syms, sizeof(mrb_sym)*irep->slen);
|
||||
if (s->filename) {
|
||||
irep->filename = s->filename;
|
||||
fname_len = strlen(s->filename);
|
||||
fname = codegen_malloc(s, fname_len + 1);
|
||||
memcpy(fname, s->filename, fname_len);
|
||||
fname[fname_len + 1] = '\0';
|
||||
irep->filename = fname;
|
||||
}
|
||||
|
||||
irep->nlocals = s->nlocals;
|
||||
|
||||
@@ -267,9 +267,6 @@ read_rite_lineno_record(mrb_state *mrb, const uint8_t *bin, size_t irepno, uint3
|
||||
mrb->irep[irepno]->lines = lines;
|
||||
|
||||
error_exit:
|
||||
if (fname) {
|
||||
mrb_free(mrb, fname);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -101,6 +101,7 @@ mrb_irep_free(mrb_state *mrb, struct mrb_irep *irep)
|
||||
mrb_free(mrb, irep->iseq);
|
||||
mrb_free(mrb, irep->pool);
|
||||
mrb_free(mrb, irep->syms);
|
||||
mrb_free(mrb, (void *)irep->filename);
|
||||
mrb_free(mrb, irep->lines);
|
||||
mrb_free(mrb, irep);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user