[PyKDE] Regression caused by lambda as slots
rasky at develer.com
Wed Jan 17 23:33:46 GMT 2007
On 17/01/2007 18.09, Giovanni Bajo wrote:
> I think I have managed to produce a (convoluted) testcase for what
> appears to be a reference leak introduced by recent SIP versions. It
> ought to be when you added support for lambda expressions as slots.
I think I know the problem: sipWrapper_traverse() does not know anything about
lambda expressions in slots. Thus, the GC can't fully traverse the lambda
expressions (whose reference is being kept by the sender object), and can't do
a full collection of all unreachable items.
I could attempt a fix but I'm not sure how you want to deal with it, since the
signal/slot part is pretty internal of qtlib.c, while sipWrapper_traverse() is
in siplib.c. Also, I don't fully understand all the semantics of sipSlot (all
the combinations of possible NULLs/values for its members) so I'd rather leave
this to you.
More information about the PyQt