Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Using multi-phase initialization for _ctypes module
  • Loading branch information
aisk committed Apr 18, 2023
commit d1ceef45f4d6ac8e283fa2cae0d9c31d2850cb81
36 changes: 17 additions & 19 deletions Modules/_ctypes/_ctypes.c
Original file line number Diff line number Diff line change
Expand Up @@ -5601,15 +5601,6 @@ wstring_at(const wchar_t *ptr, int size)
}


static struct PyModuleDef _ctypesmodule = {
PyModuleDef_HEAD_INIT,
.m_name = "_ctypes",
.m_doc = _ctypes__doc__,
.m_size = -1,
.m_methods = _ctypes_module_methods,
};


static int
_ctypes_add_types(PyObject *mod)
{
Expand Down Expand Up @@ -5783,19 +5774,26 @@ _ctypes_mod_exec(PyObject *mod)
}


static PyModuleDef_Slot _ctypes_module_slots[] = {
{Py_mod_exec, _ctypes_mod_exec},
{0, NULL}
};


static struct PyModuleDef _ctypesmodule = {
PyModuleDef_HEAD_INIT,
.m_name = "_ctypes",
.m_doc = _ctypes__doc__,
.m_size = 0,
.m_methods = _ctypes_module_methods,
.m_slots = _ctypes_module_slots,
};


PyMODINIT_FUNC
PyInit__ctypes(void)
{
PyObject *mod = PyModule_Create(&_ctypesmodule);
if (!mod) {
return NULL;
}

if (_ctypes_mod_exec(mod) < 0) {
Py_DECREF(mod);
return NULL;
}
return mod;
return PyModuleDef_Init(&_ctypesmodule);
}

/*
Expand Down