diff options
author | Erlend Egeberg Aasland <erlend.aasland@innova.no> | 2022-06-29 15:51:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-29 15:51:36 (GMT) |
commit | ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c (patch) | |
tree | 5617bca64bb81b9320ccaff45a349f897a62adde /Modules/_bz2module.c | |
parent | 63c772d5ae0267cd335ce829d4ff35b964a42bd2 (diff) | |
download | cpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.zip cpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.tar.gz cpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.tar.bz2 |
gh-94401: Remove unneeded bz2 module state (#94402)
Diffstat (limited to 'Modules/_bz2module.c')
-rw-r--r-- | Modules/_bz2module.c | 62 |
1 files changed, 11 insertions, 51 deletions
diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c index 798e9ef..9304c13 100644 --- a/Modules/_bz2module.c +++ b/Modules/_bz2module.c @@ -82,19 +82,6 @@ OutputBuffer_OnError(_BlocksOutputBuffer *buffer) typedef struct { - PyTypeObject *bz2_compressor_type; - PyTypeObject *bz2_decompressor_type; -} _bz2_state; - -static inline _bz2_state* -get_bz2_state(PyObject *module) -{ - void *state = PyModule_GetState(module); - assert(state != NULL); - return (_bz2_state *)state; -} - -typedef struct { PyObject_HEAD bz_stream bzs; int flushed; @@ -775,67 +762,40 @@ static PyType_Spec bz2_decompressor_type_spec = { static int _bz2_exec(PyObject *module) { - _bz2_state *state = get_bz2_state(module); - state->bz2_compressor_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, + PyTypeObject *bz2_compressor_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &bz2_compressor_type_spec, NULL); - if (state->bz2_compressor_type == NULL) { + if (bz2_compressor_type == NULL) { return -1; } - - if (PyModule_AddType(module, state->bz2_compressor_type) < 0) { + int rc = PyModule_AddType(module, bz2_compressor_type); + Py_DECREF(bz2_compressor_type); + if (rc < 0) { return -1; } - state->bz2_decompressor_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, + PyTypeObject *bz2_decompressor_type = (PyTypeObject *)PyType_FromModuleAndSpec(module, &bz2_decompressor_type_spec, NULL); - if (state->bz2_decompressor_type == NULL) { + if (bz2_decompressor_type == NULL) { return -1; } - - if (PyModule_AddType(module, state->bz2_decompressor_type) < 0) { + rc = PyModule_AddType(module, bz2_decompressor_type); + Py_DECREF(bz2_decompressor_type); + if (rc < 0) { return -1; } return 0; } -static int -_bz2_traverse(PyObject *module, visitproc visit, void *arg) -{ - _bz2_state *state = get_bz2_state(module); - Py_VISIT(state->bz2_compressor_type); - Py_VISIT(state->bz2_decompressor_type); - return 0; -} - -static int -_bz2_clear(PyObject *module) -{ - _bz2_state *state = get_bz2_state(module); - Py_CLEAR(state->bz2_compressor_type); - Py_CLEAR(state->bz2_decompressor_type); - return 0; -} - -static void -_bz2_free(void *module) -{ - _bz2_clear((PyObject *)module); -} - static struct PyModuleDef_Slot _bz2_slots[] = { {Py_mod_exec, _bz2_exec}, {0, NULL} }; static struct PyModuleDef _bz2module = { - PyModuleDef_HEAD_INIT, + .m_base = PyModuleDef_HEAD_INIT, .m_name = "_bz2", - .m_size = sizeof(_bz2_state), .m_slots = _bz2_slots, - .m_traverse = _bz2_traverse, - .m_clear = _bz2_clear, - .m_free = _bz2_free, }; PyMODINIT_FUNC |