diff options
author | Christian Heimes <christian@python.org> | 2020-11-18 15:12:13 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-18 15:12:13 (GMT) |
commit | 46f59ebd01e22cc6a56fd0691217318c1d801a49 (patch) | |
tree | 703277a57304be7f32885c9a5051067a4e2937e1 | |
parent | c7011012fac91a30923e39dbce7611f1b3ca8506 (diff) | |
download | cpython-46f59ebd01e22cc6a56fd0691217318c1d801a49.zip cpython-46f59ebd01e22cc6a56fd0691217318c1d801a49.tar.gz cpython-46f59ebd01e22cc6a56fd0691217318c1d801a49.tar.bz2 |
bpo-1635741: Port _hashlib to multiphase initialization (GH-23358)
Signed-off-by: Christian Heimes <christian@python.org>
-rw-r--r-- | Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst | 1 | ||||
-rw-r--r-- | Modules/_hashopenssl.c | 38 |
2 files changed, 3 insertions, 36 deletions
diff --git a/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst b/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst new file mode 100644 index 0000000..2300170 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst @@ -0,0 +1 @@ +Port _hashlib extension module to multiphase initialization (:pep:`489`) diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index adc8653..56d2a77 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -2078,7 +2078,6 @@ hashlib_init_hmactype(PyObject *module) return 0; } -#if 0 static PyModuleDef_Slot hashlib_slots[] = { /* OpenSSL 1.0.2 and LibreSSL */ {Py_mod_exec, hashlib_openssl_legacy_init}, @@ -2088,7 +2087,6 @@ static PyModuleDef_Slot hashlib_slots[] = { {Py_mod_exec, hashlib_md_meth_names}, {0, NULL} }; -#endif static struct PyModuleDef _hashlibmodule = { PyModuleDef_HEAD_INIT, @@ -2096,7 +2094,7 @@ static struct PyModuleDef _hashlibmodule = { .m_doc = "OpenSSL interface for hashlib module", .m_size = sizeof(_hashlibstate), .m_methods = EVP_functions, - .m_slots = NULL, + .m_slots = hashlib_slots, .m_traverse = hashlib_traverse, .m_clear = hashlib_clear, .m_free = hashlib_free @@ -2105,37 +2103,5 @@ static struct PyModuleDef _hashlibmodule = { PyMODINIT_FUNC PyInit__hashlib(void) { - PyObject *m = PyState_FindModule(&_hashlibmodule); - if (m != NULL) { - Py_INCREF(m); - return m; - } - - m = PyModule_Create(&_hashlibmodule); - if (m == NULL) { - return NULL; - } - - if (hashlib_openssl_legacy_init(m) < 0) { - Py_DECREF(m); - return NULL; - } - if (hashlib_init_evptype(m) < 0) { - Py_DECREF(m); - return NULL; - } - if (hashlib_init_evpxoftype(m) < 0) { - Py_DECREF(m); - return NULL; - } - if (hashlib_init_hmactype(m) < 0) { - Py_DECREF(m); - return NULL; - } - if (hashlib_md_meth_names(m) == -1) { - Py_DECREF(m); - return NULL; - } - - return m; + return PyModuleDef_Init(&_hashlibmodule); } |