Aleksander Alekseev <[email protected]> writes:
>> if (prodesc->user_proname == NULL || prodesc->internal_proname == NULL)
>> + {
>> + free(prodesc);
> I think that prodesc->user_proname and prodesc->internal_proname should
> also be freed if they are not NULL's.
Hmm, this is kind of putting lipstick on a pig, isn't it? That code
is still prone to leakage further down, because it calls stuff like
SearchSysCache which is entirely capable of throwing elog(ERROR).
If we're going to touch compile_pltcl_function at all, I'd vote for
(1) changing these malloc calls to MemoryContextAlloc(TopMemoryContext,...
(2) putting the cleanup into a PG_CATCH block, and removing all the
retail free() calls that are there now.
regards, tom lane
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers