• Michael Paquier's avatar
    Fix memory leak coming from simple lists built in reindexdb · 04cf0bfc
    Michael Paquier authored
    When building a list of relations for a parallel processing of a schema
    or a database (or just a single-entry list for the non-parallel case
    with the database name), the list is allocated and built on-the-fly for
    each database processed, leaking after one database-level reindex is
    done.  This accumulates leaks when processing all databases, and could
    become a visible issue with thousands of relations.
    
    This is fixed by introducing a new routine in simple_list.c to free all
    the elements in a simple list made of strings or OIDs.  The header of
    the list may be using a variable declaration or an allocated pointer,
    so we don't have a routine to free this part to keep the interface
    simple.
    
    Per report from coverity for an issue introduced by 5ab892c3, and
    valgrind complains about the leak as well.  The idea to introduce a new
    routine in simple_list.c is from Tom Lane.
    
    Author: Michael Paquier
    Reviewed-by: Tom Lane
    04cf0bfc
simple_list.h 1.68 KB