On Fri, 21 Jan 2022 at 10:10, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > > On 20/01/22 12:09 am, Chris Angelico wrote: > > At this point, the refcount has indeed been increased. > > > >> return self; > >> } > > > > And then you say "my return value is this object". > > > > So you're incrementing the refcount, then returning it without > > incrementing the refcount. Your code is actually equivalent to "return > > self". > > Chris, you're not making any sense. This is C code, so there's no > way that "return x" can change the reference count of x.
Yeah, I wasn't clear there. It was equivalent to *the Python code* "return self". My apologies. > > The normal thing to do is to add a reference to whatever you're > > returning. For instance, Py_RETURN_NONE will incref None and then > > return it. > > > > The OP understands that this is not a normal thing to do. He's > trying to deliberately leak a reference for the purpose of diagnosing > a problem. > > It would be interesting to see what the actual refcount is after > calling this function. > Yes, and that's why I was saying it would need a *second* incref. ChrisA -- https://mail.python.org/mailman/listinfo/python-list