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

--- Comment #14 from Tom de Vries <vries at gcc dot gnu.org> ---
Author: vries
Date: Fri Dec 28 03:43:26 2018
New Revision: 267443

URL: https://gcc.gnu.org/viewcvs?rev=267443&root=gcc&view=rev
Log:
[libbacktrace] Fix memory leak in loop in build_address_map

When failing in build_address_map, we free the unit that's currently being
handled in the loop, but the ones that already have been allocated are leaked.

Fix this by keeping track of allocated units in a vector, and releasing them
upon failure.

Also, now that we have a vector of allocated units, move the freeing upon
failure of the abbrevs associated with each unit to build_address_map, and
remove the now redundant call to free_unit_addrs_vector.

Bootstrapped and reg-tested on x86_64.

2018-12-28  Ian Lance Taylor  <i...@golang.org>
            Tom de Vries  <tdevr...@suse.de>

        PR libbacktrace/88063
        * dwarf.c (free_unit_addrs_vector): Remove.
        (build_address_map): Keep track of allocated units in vector.  Free
        allocated units and corresponding abbrevs upon failure.  Remove now
        redundant call to free_unit_addrs_vector.  Free addrs vector upon
        failure.  Free allocated unit vector.

Modified:
    trunk/libbacktrace/ChangeLog
    trunk/libbacktrace/dwarf.c

Reply via email to