If you take a look at the XS code referred to in that thread via the link that Corion posted in Re: Uncollected Garbage ..., you'll see that the version was 1.13, and included the following snippet that he identified as the possible cause:
if (!CvDEPTH(cv))
(void)SvREFCNT_inc(cv);
If you then take a look at the latest version, you'll see that snippet is no longer present.
If you then look at the p5p list, you'll see that dave_the_m identified a new and different problem which also affected first(), and offered a patch to fix both.
My interpretation, having recently attempted to use the reduce() XS code as a template for optimal callback performance from Inline::C, is that trying to bypass work out what the various macros do--and why--is very, very hard.
Examine what is said, not who speaks.
Silence betokens consent.
Love the truth but pardon error.
|