[Q] Extension: Refcount for exception types

Ames Andreas (MPA/DF) Andreas.Ames at tenovis.com
Fri Apr 16 07:36:13 EDT 2004


Hi all,

I'm currently building an extension module by hand and am confused by
the fact that as well xxmodule.c as structmodule.c and other examples
increment the refcount of the exception type(s) they are defining.
I. e. from xxmodule.c:

        if (ErrorObject == NULL) {
                ErrorObject = PyErr_NewException("xx.error", NULL, NULL);
                if (ErrorObject == NULL)
                        return;
        }
        Py_INCREF(ErrorObject);
        ^^^^^^^^^^^^^^^^^^^^^^^ I mean this one.
        PyModule_AddObject(m, "error", ErrorObject);

I know that PyModule_AddObject steals a reference, but now
ErrorObject's refcount should be 2, isn't it?  I just fail to see
how the refcount can return to 0.  I'm sure this is simple to explain,
so please enlighten me, why this isn't a leak.


cheers,

aa





More information about the Python-list mailing list