8000 Port mmap module to multiphase initialization · python/cpython@18e988a · GitHub
[go: up one dir, main page]

Skip to content

Commit 18e988a

Browse files
committed
Port mmap module to multiphase initialization
1 parent 8a3d2af commit 18e988a

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Port :mod:`mmap` to multiphase initialization.

Modules/mmapmodule.c

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,33 +1519,17 @@ setint(PyObject *d, const char *name, long value)
15191519
}
15201520
}
15211521

1522-
1523-
static struct PyModuleDef mmapmodule = {
1524-
PyModuleDef_HEAD_INIT,
1525-
"mmap",
1526-
NULL,
1527-
-1,
1528-
NULL,
1529-
NULL,
1530-
NULL,
1531-
NULL,
1532-
NULL
1533-
};
1534-
1535-
PyMODINIT_FUNC
1536-
PyInit_mmap(void)
1522+
static int
1523+
mmap_exec(PyObject *module)
15371524
{
1538-
PyObject *dict, *module;
1539-
1540-
if (PyType_Ready(&mmap_object_type) < 0)
1541-
return NULL;
1525+
if (PyType_Ready(&mmap_object_type) < 0) {
1526+
return -1;
1527+
}
15421528

1543-
module = PyModule_Create(&mmapmodule);
1544-
if (module == NULL)
1545-
return NULL;
1546-
dict = PyModule_GetDict(module);
1547-
if (!dict)
1548-
return NULL;
1529+
PyObject *dict = PyModule_GetDict(module);
1530+
if (!dict) {
1531+
return -1;
1532+
}
15491533
PyDict_SetItemString(dict, "error", PyExc_OSError);
15501534
PyDict_SetItemString(dict, "mmap", (PyObject*) &mmap_object_type);
15511535
#ifdef PROT_EXEC
@@ -1660,6 +1644,23 @@ PyInit_mmap(void)
16601644
setint(dict, "MADV_PROTECT", MADV_PROTECT);
16611645
#endif
16621646
#endif // HAVE_MADVISE
1663-
1664-
return module;
1647+
return 0;
16651648
}
1649+
1650+
static PyModuleDef_Slot mmap_slots[] = {
1651+
{Py_mod_exec, mmap_exec},
1652+
{0, NULL}
1653+
};
1654+
1655+
static struct PyModuleDef mmapmodule = {
1656+
PyModuleDef_HEAD_INIT,
1657+
.m_name = "mmap",
1658+
.m_size = 0,
1659+
.m_slots = mmap_slots,
1660+
};
1661+
1662+
PyMODINIT_FUNC
1663+
PyInit_mmap(void)
1664+
{
1665+
return PyModuleDef_Init(&mmapmodule);
1666+
}

0 commit comments

Comments
 (0)
0