Skip to content

Commit 4b8032e

Browse files
authored
bpo-41713: _signal doesn't use multi-phase init (GH-22087)
Partially revert commit 71d1bd9: don't use multi-phase initialization (PEP 489) for the _signal extension module.
1 parent 54a66ad commit 4b8032e

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

Misc/NEWS.d/next/Core and Builtins/2020-09-01-17-07-20.bpo-1635741.7wSuCc.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

Modules/signalmodule.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,26 +1649,32 @@ signal_exec(PyObject *m)
16491649
return 0;
16501650
}
16511651

1652-
static PyModuleDef_Slot signal_slots[] = {
1653-
{Py_mod_exec, signal_exec},
1654-
{0, NULL}
1655-
};
16561652

16571653
static struct PyModuleDef signalmodule = {
16581654
PyModuleDef_HEAD_INIT,
16591655
"_signal",
16601656
.m_doc = module_doc,
1661-
.m_size = 0,
1657+
.m_size = -1,
16621658
.m_methods = signal_methods,
1663-
.m_slots = signal_slots
16641659
};
16651660

1661+
16661662
PyMODINIT_FUNC
16671663
PyInit__signal(void)
16681664
{
1669-
return PyModuleDef_Init(&signalmodule);
1665+
PyObject *mod = PyModule_Create(&signalmodule);
1666+
if (mod == NULL) {
1667+
return NULL;
1668+
}
1669+
1670+
if (signal_exec(mod) < 0) {
1671+
Py_DECREF(mod);
1672+
return NULL;
1673+
}
1674+
return mod;
16701675
}
16711676

1677+
16721678
static void
16731679
finisignal(void)
16741680
{

0 commit comments

Comments
 (0)