Fortran: Avoid double-free with parse error (PR96041, PR93423)
gcc/fortran/ PR fortran/96041 PR fortran/93423 * decl.c (gfc_match_submod_proc): Avoid later double-free in the error case.
This commit is contained in:
parent
c7f4be78cb
commit
c12facd228
1 changed files with 9 additions and 0 deletions
|
@ -9819,6 +9819,15 @@ gfc_match_submod_proc (void)
|
|||
|
||||
if (gfc_match_eos () != MATCH_YES)
|
||||
{
|
||||
/* Unset st->n.sym. Note: in reject_statement (), the symbol changes are
|
||||
undone, such that the st->n.sym->formal points to the original symbol;
|
||||
if now this namespace is finalized, the formal namespace is freed,
|
||||
but it might be still needed in the parent namespace. */
|
||||
gfc_symtree *st = gfc_find_symtree (gfc_current_ns->sym_root, sym->name);
|
||||
st->n.sym = NULL;
|
||||
gfc_free_symbol (sym->tlink);
|
||||
sym->tlink = NULL;
|
||||
sym->refs--;
|
||||
gfc_syntax_error (ST_MODULE_PROC);
|
||||
return MATCH_ERROR;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue