[Python-Dev] Functions that steal references (Re: [pygame] [patch] minor memory leaks...)
Hrvoje Niksic
hrvoje.niksic at avl.com
Wed Jun 17 10:16:15 CEST 2009
Christian Heimes wrote:
>>>> I assumed that since PyModule_AddObject is documented as stealing a
>>>> reference, it always stole a reference. But in reality it only does so
>>>> conditionally, when it succeeds.
>>> As an aside, is this a general feature of functions
>>> that steal references, or is PyModule_AddObject an
>>> oddity?
>>
>> IIRC, It's an oddity.
>
> But it is a convenient oddity nonetheless.
Stealing references is sometimes convenient, but Greg was referring to
functions that steal references *conditionally*, which is indeed an
oddity. Most functions and macros that steal references do so
unconditionally, typically because they can't fail anyway. Conditional
stealing of references requires very careful thinking on the side of
callers that care about not leaking references in the face of
exceptions. See http://bugs.python.org/issue1782 for an example.
More information about the Python-Dev
mailing list