diff options
Diffstat (limited to 'Doc/c-api')
-rw-r--r-- | Doc/c-api/module.rst | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Doc/c-api/module.rst b/Doc/c-api/module.rst index 68cbda2..feca1ec 100644 --- a/Doc/c-api/module.rst +++ b/Doc/c-api/module.rst @@ -417,7 +417,22 @@ state: Add an object to *module* as *name*. This is a convenience function which can be used from the module's initialization function. This steals a reference to - *value*. Return ``-1`` on error, ``0`` on success. + *value* on success. Return ``-1`` on error, ``0`` on success. + + .. note:: + + Unlike other functions that steal references, ``PyModule_AddObject()`` only + decrements the reference count of *value* **on success**. + + This means that its return value must be checked, and calling code must + :c:func:`Py_DECREF` *value* manually on error. Example usage:: + + Py_INCREF(spam); + if (PyModule_AddObject(module, "spam", spam) < 0) { + Py_DECREF(module); + Py_DECREF(spam); + return NULL; + } .. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value) |