https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60898

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org

--- Comment #14 from Tobias Burnus <burnus at gcc dot gnu.org> ---
The following "fixes" the issue - but it leaks memory. The problem is that one
calls gfc_traverse_symtree with resolve_symbol. One then one fills all symtrees
from ns->sym_root into the vector st_vec. – If one now calls the sym_func(),
one might delete the symbol (gfc_release_symbol), but one later can access the
symbol via the copied symtree.

--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -12987,7 +12987,7 @@ resolve_symbol (gfc_symbol *sym)
            {
              this_symtree = gfc_find_symtree (gfc_current_ns->sym_root,
                                               sym->name);
-             gfc_release_symbol (sym);
+             // gfc_release_symbol (sym); // FIXME
              symtree->n.sym->refs++;
              this_symtree->n.sym = symtree->n.sym;
              return;

Reply via email to