aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <aldot@gcc.gnu.org>2017-12-06 22:55:10 +0100
committerBernhard Reutner-Fischer <aldot@gcc.gnu.org>2021-10-29 18:26:27 +0200
commit7883a7f07c1ad9c8aaccc5bbd96e0ae1fa230c89 (patch)
tree386260693883ed0ed8018f7b36b665e783eb5b3e /gcc/fortran
parent5380cf0272800847858e117740efaa6d0d6a3996 (diff)
downloadgcc-7883a7f07c1ad9c8aaccc5bbd96e0ae1fa230c89.zip
gcc-7883a7f07c1ad9c8aaccc5bbd96e0ae1fa230c89.tar.gz
gcc-7883a7f07c1ad9c8aaccc5bbd96e0ae1fa230c89.tar.bz2
Fortran: Free type-bound procedure structs
compiling gfortran.dg/typebound_proc_31.f90 leaked the type-bound structs: 56 bytes in 1 blocks are definitely lost. at 0x4C2CC05: calloc (vg_replace_malloc.c:711) by 0x151EA90: xcalloc (xmalloc.c:162) by 0x8E3E4F: gfc_get_typebound_proc(gfc_typebound_proc*) (symbol.c:4945) by 0x84C095: match_procedure_in_type (decl.c:10486) by 0x84C095: gfc_match_procedure() (decl.c:6696) ... gcc/fortran/ChangeLog: 2017-12-06 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * symbol.c (free_tb_tree): Free type-bound procedure struct. (gfc_get_typebound_proc): Use explicit memcpy for clarity.
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/symbol.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index c77f3f8..34c0ba2 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -3832,7 +3832,7 @@ free_tb_tree (gfc_symtree *t)
/* TODO: Free type-bound procedure structs themselves; probably needs some
sort of ref-counting mechanism. */
-
+ free (t->n.tb);
free (t);
}
@@ -5073,7 +5073,7 @@ gfc_get_typebound_proc (gfc_typebound_proc *tb0)
result = XCNEW (gfc_typebound_proc);
if (tb0)
- *result = *tb0;
+ memcpy (result, tb0, sizeof (gfc_typebound_proc));
result->error = 1;
latest_undo_chgset->tbps.safe_push (result);