Skip to content

Commit

Permalink
bpo-1635741: Port sha256 module to multiphase init (PEP 489) (GH-21189)
Browse files Browse the repository at this point in the history
  • Loading branch information
koubaa committed Jul 3, 2020
1 parent 148f329 commit 9d00697
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Port :mod:`sha256` to multiphase initialization
58 changes: 30 additions & 28 deletions Modules/sha256module.c
Original file line number Diff line number Diff line change
Expand Up @@ -681,43 +681,45 @@ static struct PyMethodDef SHA_functions[] = {
{NULL, NULL} /* Sentinel */
};


/* Initialize this module. */

static struct PyModuleDef _sha256module = {
PyModuleDef_HEAD_INIT,
"_sha256",
NULL,
-1,
SHA_functions,
NULL,
NULL,
NULL,
NULL
};

PyMODINIT_FUNC
PyInit__sha256(void)
static int sha256_exec(PyObject *module)
{
PyObject *m;

Py_SET_TYPE(&SHA224type, &PyType_Type);
if (PyType_Ready(&SHA224type) < 0) {
return NULL;
return -1;
}
Py_SET_TYPE(&SHA256type, &PyType_Type);
if (PyType_Ready(&SHA256type) < 0) {
return NULL;
return -1;
}

m = PyModule_Create(&_sha256module);
if (m == NULL)
return NULL;

Py_INCREF((PyObject *)&SHA224type);
PyModule_AddObject(m, "SHA224Type", (PyObject *)&SHA224type);
if (PyModule_AddObject(module, "SHA224Type", (PyObject *)&SHA224type) < 0) {
Py_DECREF((PyObject *)&SHA224type);
return -1;
}
Py_INCREF((PyObject *)&SHA256type);
PyModule_AddObject(m, "SHA256Type", (PyObject *)&SHA256type);
return m;
if (PyModule_AddObject(module, "SHA256Type", (PyObject *)&SHA256type) < 0) {
Py_DECREF((PyObject *)&SHA256type);
return -1;
}
return 0;
}

static PyModuleDef_Slot _sha256_slots[] = {
{Py_mod_exec, sha256_exec},
{0, NULL}
};

static struct PyModuleDef _sha256module = {
PyModuleDef_HEAD_INIT,
.m_name = "_sha256",
.m_methods = SHA_functions,
.m_slots = _sha256_slots,
};

/* Initialize this module. */
PyMODINIT_FUNC
PyInit__sha256(void)
{
return PyModuleDef_Init(&_sha256module);
}

0 comments on commit 9d00697

Please sign in to comment.