bpo-1635741: Port fcntl module to multiphase initialization (GH-20540) · python/cpython@e9684fa

File tree

2 files changed

lines changed

  • Misc/NEWS.d/next/Core and Builtins

2 files changed

lines changed

Original file line numberDiff line numberDiff line change

@@ -0,0 +1 @@

1+

Port :mod:`fcntl` to multiphase initialization.

Original file line numberDiff line numberDiff line change

@@ -662,34 +662,31 @@ all_ins(PyObject* m)

662662

return 0;

663663

}

664664
665+

static int

666+

fcntl_exec(PyObject *module)

667+

{

668+

if (all_ins(module) < 0) {

669+

return -1;

670+

}

671+

return 0;

672+

}

673+
674+

static PyModuleDef_Slot fcntl_slots[] = {

675+

{Py_mod_exec, fcntl_exec},

676+

{0, NULL}

677+

};

665678
666679

static struct PyModuleDef fcntlmodule = {

667680

PyModuleDef_HEAD_INIT,

668-

"fcntl",

669-

module_doc,

670-

-1,

671-

fcntl_methods,

672-

NULL,

673-

NULL,

674-

NULL,

675-

NULL

681+

.m_name = "fcntl",

682+

.m_doc = module_doc,

683+

.m_size = 0,

684+

.m_methods = fcntl_methods,

685+

.m_slots = fcntl_slots,

676686

};

677687
678688

PyMODINIT_FUNC

679689

PyInit_fcntl(void)

680690

{

681-

PyObject *m;

682-
683-

/* Create the module and add the functions and documentation */

684-

m = PyModule_Create(&fcntlmodule);

685-

if (m == NULL)

686-

return NULL;

687-
688-

/* Add some symbolic constants to the module */

689-

if (all_ins(m) < 0) {

690-

Py_DECREF(m);

691-

return NULL;

692-

}

693-
694-

return m;

691+

return PyModuleDef_Init(&fcntlmodule);

695692

}