]> git.ipfire.org Git - thirdparty/gcc.git/commit - libiberty/cplus-dem.c
libiberty: Fix memory leak in ada_demangle when symbol cannot be demangled.
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2016 23:13:10 +0000 (23:13 +0000)
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2016 23:13:10 +0000 (23:13 +0000)
commit51bca5434da533c0f90019c9e8f68f927a2613ab
treec6c4281d638ba42a7cbf50facf09bdb390eef6ed
parent231c14bb7338953b187e03a4bee5dc20bcac89ce
libiberty: Fix memory leak in ada_demangle when symbol cannot be demangled.

When a symbol cannot be demangled in ada_demangle a new demangled VEC
will be allocated without deleting the demangled VEC already in use.

Running testsuite/test-demangle under valgrind will show the leak for
this entry in testsuite/demangle-expected:

    # Elaborated flag (not demangled)
    --format=gnat
    x_E
    <x_E>

 11 bytes in 1 blocks are definitely lost in loss record 1 of 1
    at 0x4C27BE3: malloc (vg_replace_malloc.c:299)
    by 0x413FE7: xmalloc (xmalloc.c:148)
    by 0x4025EC: ada_demangle (cplus-dem.c:930)
    by 0x402C59: cplus_demangle (cplus-dem.c:892)
    by 0x400FEC: main (test-demangle.c:317)

libiberty/ChangeLog:

* cplus-dem.c (ada_demangle): Initialize demangled to NULL and
XDELETEVEC demangled when unknown.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241760 138bc75d-0d04-0410-961f-82ee72b054a4
libiberty/ChangeLog
libiberty/cplus-dem.c