diff options
author | Tobias Burnus <burnus@net-b.de> | 2012-08-27 14:07:43 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-08-27 14:07:43 +0200 |
commit | 6f79f4d1d6c6e3dcb0231404969882726d31a50c (patch) | |
tree | 35954802481b336b7827eb81f61dda5ed4be17f6 /gcc/fortran/module.c | |
parent | 1d6368551e85cac41df6df4234d865918b693319 (diff) | |
download | gcc-6f79f4d1d6c6e3dcb0231404969882726d31a50c.zip gcc-6f79f4d1d6c6e3dcb0231404969882726d31a50c.tar.gz gcc-6f79f4d1d6c6e3dcb0231404969882726d31a50c.tar.bz2 |
re PR fortran/41093 (memory leaks with gfc_namespace)
2012-08-27 Tobias Burnus <burnus@net-b.de>
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
Diffstat (limited to 'gcc/fortran/module.c')
-rw-r--r-- | gcc/fortran/module.c | 5 |
1 files changed, 1 insertions, 4 deletions
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. */ |