Skip to content

Commit 9f9e45a

Browse files
committed
Port sha256 module to multi-phase init (PEP 489)
1 parent 9cfcdb7 commit 9f9e45a

File tree

1 file changed

+29
-28
lines changed

1 file changed

+29
-28
lines changed

Modules/sha256module.c

+29-28
Original file line numberDiff line numberDiff line change
@@ -681,43 +681,44 @@ static struct PyMethodDef SHA_functions[] = {
681681
{NULL, NULL} /* Sentinel */
682682
};
683683

684-
685-
/* Initialize this module. */
686-
687-
static struct PyModuleDef _sha256module = {
688-
PyModuleDef_HEAD_INIT,
689-
"_sha256",
690-
NULL,
691-
-1,
692-
SHA_functions,
693-
NULL,
694-
NULL,
695-
NULL,
696-
NULL
697-
};
698-
699-
PyMODINIT_FUNC
700-
PyInit__sha256(void)
684+
static int sha256_exec(PyObject *module)
701685
{
702-
PyObject *m;
703-
704686
Py_SET_TYPE(&SHA224type, &PyType_Type);
705687
if (PyType_Ready(&SHA224type) < 0) {
706-
return NULL;
688+
return -1;
707689
}
708690
Py_SET_TYPE(&SHA256type, &PyType_Type);
709691
if (PyType_Ready(&SHA256type) < 0) {
710-
return NULL;
692+
return -1;
711693
}
712694

713-
m = PyModule_Create(&_sha256module);
714-
if (m == NULL)
715-
return NULL;
716-
717695
Py_INCREF((PyObject *)&SHA224type);
718-
PyModule_AddObject(m, "SHA224Type", (PyObject *)&SHA224type);
696+
PyModule_AddObject(module, "SHA224Type", (PyObject *)&SHA224type);
719697
Py_INCREF((PyObject *)&SHA256type);
720-
PyModule_AddObject(m, "SHA256Type", (PyObject *)&SHA256type);
721-
return m;
698+
PyModule_AddObject(module, "SHA256Type", (PyObject *)&SHA256type);
699+
return 0;
700+
}
701+
702+
static PyModuleDef_Slot _sha256_slots[] = {
703+
{Py_mod_exec, sha256_exec},
704+
{0, NULL}
705+
};
722706

707+
static struct PyModuleDef _sha256module = {
708+
PyModuleDef_HEAD_INIT,
709+
"_sha256",
710+
NULL,
711+
0,
712+
SHA_functions,
713+
_sha256_slots,
714+
NULL,
715+
NULL,
716+
NULL
717+
};
718+
719+
/* Initialize this module. */
720+
PyMODINIT_FUNC
721+
PyInit__sha256(void)
722+
{
723+
return PyModuleDef_Init(&_sha256module);
723724
}

0 commit comments

Comments
 (0)