]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-134160: Use PyModuleDef.m_free in the example module xxlimited (GH-135174...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 7 Jun 2025 09:03:32 +0000 (11:03 +0200)
committerGitHub <noreply@github.com>
Sat, 7 Jun 2025 09:03:32 +0000 (11:03 +0200)
gh-134160: Use PyModuleDef.m_free in the example module xxlimited (GH-135174)
(cherry picked from commit 1adca08d658ee2d520f3193960eaf3ae2ead1cef)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
Modules/xxlimited.c

index d86741e1dfc18cf7bfcae7e2254b301b8a83a6f8..b29cd84d0b464bf24e5c476b4bb5460f2300c8ed 100644 (file)
@@ -417,6 +417,13 @@ xx_clear(PyObject *module)
     return 0;
 }
 
+static void
+xx_free(void *module)
+{
+    // allow xx_modexec to omit calling xx_clear on error
+    (void)xx_clear((PyObject *)module);
+}
+
 static struct PyModuleDef xxmodule = {
     PyModuleDef_HEAD_INIT,
     .m_name = "xxlimited",
@@ -426,9 +433,7 @@ static struct PyModuleDef xxmodule = {
     .m_slots = xx_slots,
     .m_traverse = xx_traverse,
     .m_clear = xx_clear,
-    /* m_free is not necessary here: xx_clear clears all references,
-     * and the module state is deallocated along with the module.
-     */
+    .m_free = xx_free,
 };