summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-09-08 13:33:52 (GMT)
committerGitHub <noreply@github.com>2020-09-08 13:33:52 (GMT)
commitf315142ddc61e54a59028db562aec5f62db783e1 (patch)
treecbceef40b4cc0e9e788e0ab3e45e77dc9c1178b9 /Python
parentbb083d33f7ffe93cee9e1f63d1e526dc81a6e34f (diff)
downloadcpython-f315142ddc61e54a59028db562aec5f62db783e1.zip
cpython-f315142ddc61e54a59028db562aec5f62db783e1.tar.gz
cpython-f315142ddc61e54a59028db562aec5f62db783e1.tar.bz2
bpo-1635741: Port mashal module to multi-phase init (#22149)
Port the 'mashal' extension module to the multi-phase initialization API (PEP 489).
Diffstat (limited to 'Python')
-rw-r--r--Python/marshal.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/Python/marshal.c b/Python/marshal.c
index c4538bd..91a0f8a 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1785,28 +1785,30 @@ dumps() -- marshal value as a bytes object\n\
loads() -- read value from a bytes-like object");
+static int
+marshal_module_exec(PyObject *mod)
+{
+ if (PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static PyModuleDef_Slot marshalmodule_slots[] = {
+ {Py_mod_exec, marshal_module_exec},
+ {0, NULL}
+};
static struct PyModuleDef marshalmodule = {
PyModuleDef_HEAD_INIT,
- "marshal",
- module_doc,
- 0,
- marshal_methods,
- NULL,
- NULL,
- NULL,
- NULL
+ .m_name = "marshal",
+ .m_doc = module_doc,
+ .m_methods = marshal_methods,
+ .m_slots = marshalmodule_slots,
};
PyMODINIT_FUNC
PyMarshal_Init(void)
{
- PyObject *mod = PyModule_Create(&marshalmodule);
- if (mod == NULL)
- return NULL;
- if (PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION) < 0) {
- Py_DECREF(mod);
- return NULL;
- }
- return mod;
+ return PyModuleDef_Init(&marshalmodule);
}