mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
bpo-32374: m_traverse may be called with m_state=NULL (GH-5140)
Multi-phase initialized modules allow m_traverse to be called while the module is still being initialized, so module authors may need to account for that.
This commit is contained in:
parent
d6e1404661
commit
c2b0b12d1a
5 changed files with 96 additions and 7 deletions
|
@ -196,17 +196,23 @@ or request "multi-phase initialization" by returning the definition struct itsel
|
|||
.. c:member:: traverseproc m_traverse
|
||||
|
||||
A traversal function to call during GC traversal of the module object, or
|
||||
*NULL* if not needed.
|
||||
*NULL* if not needed. This function may be called before module state
|
||||
is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
|
||||
and before the :c:member:`Py_mod_exec` function is executed.
|
||||
|
||||
.. c:member:: inquiry m_clear
|
||||
|
||||
A clear function to call during GC clearing of the module object, or
|
||||
*NULL* if not needed.
|
||||
*NULL* if not needed. This function may be called before module state
|
||||
is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
|
||||
and before the :c:member:`Py_mod_exec` function is executed.
|
||||
|
||||
.. c:member:: freefunc m_free
|
||||
|
||||
A function to call during deallocation of the module object, or *NULL* if
|
||||
not needed.
|
||||
not needed. This function may be called before module state
|
||||
is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
|
||||
and before the :c:member:`Py_mod_exec` function is executed.
|
||||
|
||||
Single-phase initialization
|
||||
...........................
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue