diff options
author | Victor Stinner <vstinner@python.org> | 2020-03-17 17:09:46 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-17 17:09:46 (GMT) |
commit | 5b1ef200d31a74a9b478d0217d73ed0a659a8a06 (patch) | |
tree | 3a3afde33a456ac49284058c00b1d685c54bcf3c /Doc/whatsnew | |
parent | 52268941f37e3e27bd01792b081877ec3bc9ce12 (diff) | |
download | cpython-5b1ef200d31a74a9b478d0217d73ed0a659a8a06.zip cpython-5b1ef200d31a74a9b478d0217d73ed0a659a8a06.tar.gz cpython-5b1ef200d31a74a9b478d0217d73ed0a659a8a06.tar.bz2 |
bpo-39824: module_traverse() don't call m_traverse if md_state=NULL (GH-18738)
Extension modules: m_traverse, m_clear and m_free functions of
PyModuleDef are no longer called if the module state was requested
but is not allocated yet. This is the case immediately after the
module is created and before the module is executed (Py_mod_exec
function). More precisely, these functions are not called if m_size is
greater than 0 and the module state (as returned by
PyModule_GetState()) is NULL.
Extension modules without module state (m_size <= 0) are not affected.
Co-Authored-By: Petr Viktorin <encukou@gmail.com>
Diffstat (limited to 'Doc/whatsnew')
-rw-r--r-- | Doc/whatsnew/3.9.rst | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 8c087c6..fd3d333 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -503,6 +503,17 @@ Build and C API Changes *tstate* parameter (``PyThreadState*``). (Contributed by Victor Stinner in :issue:`38500`.) +* Extension modules: :c:member:`~PyModuleDef.m_traverse`, + :c:member:`~PyModuleDef.m_clear` and :c:member:`~PyModuleDef.m_free` + functions of :c:type:`PyModuleDef` are no longer called if the module state + was requested but is not allocated yet. This is the case immediately after + the module is created and before the module is executed + (:c:data:`Py_mod_exec` function). More precisely, these functions are not called + if :c:member:`~PyModuleDef.m_size` is greater than 0 and the module state (as + returned by :c:func:`PyModule_GetState`) is ``NULL``. + + Extension modules without module state (``m_size <= 0``) are not affected. + Deprecated ========== |