]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-41713: _signal doesn't use multi-phase init (GH-22087)
authorVictor Stinner <vstinner@python.org>
Fri, 4 Sep 2020 12:51:05 +0000 (14:51 +0200)
committerGitHub <noreply@github.com>
Fri, 4 Sep 2020 12:51:05 +0000 (14:51 +0200)
Partially revert commit 71d1bd9569c8a497e279f2fea6fe47cd70a87ea3:
don't use multi-phase initialization (PEP 489) for the _signal
extension module.

Misc/NEWS.d/next/Core and Builtins/2020-09-01-17-07-20.bpo-1635741.7wSuCc.rst [deleted file]
Modules/signalmodule.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-09-01-17-07-20.bpo-1635741.7wSuCc.rst b/Misc/NEWS.d/next/Core and Builtins/2020-09-01-17-07-20.bpo-1635741.7wSuCc.rst
deleted file mode 100644 (file)
index ff7cb35..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Port the :mod:`_signal` extension module to multi-phase initialization (:pep:`489`).\r
index 262f2b66a57e29906e47a52b0a7333d2675c8ca4..3440894b2159d573a8acf0c064fc4146815a81fa 100644 (file)
@@ -1649,26 +1649,32 @@ signal_exec(PyObject *m)
   return 0;
 }
 
-static PyModuleDef_Slot signal_slots[] = {
-    {Py_mod_exec, signal_exec},
-    {0, NULL}
-};
 
 static struct PyModuleDef signalmodule = {
     PyModuleDef_HEAD_INIT,
     "_signal",
     .m_doc = module_doc,
-    .m_size = 0,
+    .m_size = -1,
     .m_methods = signal_methods,
-    .m_slots = signal_slots
 };
 
+
 PyMODINIT_FUNC
 PyInit__signal(void)
 {
-    return PyModuleDef_Init(&signalmodule);
+    PyObject *mod = PyModule_Create(&signalmodule);
+    if (mod == NULL) {
+        return NULL;
+    }
+
+    if (signal_exec(mod) < 0) {
+        Py_DECREF(mod);
+        return NULL;
+    }
+    return mod;
 }
 
+
 static void
 finisignal(void)
 {