From: Bernhard Reutner-Fischer Date: Wed, 6 Dec 2017 21:55:10 +0000 (+0100) Subject: Fortran: Free type-bound procedure structs X-Git-Tag: basepoints/gcc-13~3520 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7883a7f07c1ad9c8aaccc5bbd96e0ae1fa230c89;p=thirdparty%2Fgcc.git 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 * symbol.c (free_tb_tree): Free type-bound procedure struct. (gfc_get_typebound_proc): Use explicit memcpy for clarity. --- diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index c77f3f849625..34c0ba2fac40 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);