From 6f79f4d1d6c6e3dcb0231404969882726d31a50c Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 27 Aug 2012 14:07:43 +0200 Subject: re PR fortran/41093 (memory leaks with gfc_namespace) 2012-08-27 Tobias Burnus PR fortran/41093 * gfortran.h (gfc_common_head): Add "int refs". * match.c (gfc_match_common): Increment refs. * resolve.c (resolve_symbol): Only increment formal_ns->refs if formal_ns is not sym->ns. * symbol.c (gfc_free_symbol): Only free formal_ns if if formal_ns is not sym->ns. Free common_block if refs is one. (gfc_release_symbol): Release formal_ns only if the symbol is not ENTRY of a module. * decl.c (get_proc_name): Don't increment gfc_current_ns->refs. * parse.c (parse_interface): Incement proc_unit->refs++ for proc-pointer result variables. * module.c (mio_symbol): Don't increase sym->refs for its use in sym->formal_ns->proc_name. From-SVN: r190710 --- gcc/fortran/module.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'gcc/fortran/module.c') diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index a4ff199..bfd8b01 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3807,10 +3807,7 @@ mio_symbol (gfc_symbol *sym) { mio_namespace_ref (&sym->formal_ns); if (sym->formal_ns) - { - sym->formal_ns->proc_name = sym; - sym->refs++; - } + sym->formal_ns->proc_name = sym; } /* Save/restore common block links. */ -- cgit v1.1