From 42b42130309642bc736f32ced33a9bef1bd04157 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Wed, 18 Nov 2020 08:48:35 +0100 Subject: [PATCH] bpo-1635741: Port _hashlib to multiphase initialization Signed-off-by: Christian Heimes --- ...2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst | 1 + Modules/_hashopenssl.c | 38 +------------------ 2 files changed, 3 insertions(+), 36 deletions(-) create mode 100644 Misc/NEWS.d/next/C API/2020-11-18-08-45-36.bpo-1635741.VLZfiY.rst 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 00000000000000..2300170587d7e0 --- /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 adc86537732502..56d2a77049e349 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); } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy