Re: plperl and inline functions -- first draft

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alexey Klyukin <alexk@commandprompt.com>
Cc: Tim Bunce <Tim.Bunce@pobox.com>, Joshua Tolley <eggyknap@gmail.com>, Andrew Dunstan <andrew@dunslane.net>, pgsql-hackers@postgresql.org
Date: 2009-11-29T02:40:34Z
Lists: pgsql-hackers
Alexey Klyukin <alexk@commandprompt.com> writes:
> On Nov 20, 2009, at 3:50 PM, Tim Bunce wrote:
>> When does the reference held by desc.reference get freed?
>> At the moment it looks like this would leak memory for each DO.

> Isn't it also the case with the existing plperl code ? I've noticed that free(prodesc) is called when it's no longer used (i.e. in plperl_compile_callback:1636), but refcount of desc->reference is never decremented.

I've been experimenting with this and confirmed that there is a leak;
not only in the DO patch but in the pre-existing code, if a plperl
function is redefined repeatedly.

Is this the correct way to release the SV* reference?

		if (reference)
			SvREFCNT_dec(reference);

			regards, tom lane