summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErlend Egeberg Aasland <erlend.aasland@innova.no>2022-06-29 15:51:36 (GMT)
committerGitHub <noreply@github.com>2022-06-29 15:51:36 (GMT)
commitac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c (patch)
tree5617bca64bb81b9320ccaff45a349f897a62adde
parent63c772d5ae0267cd335ce829d4ff35b964a42bd2 (diff)
downloadcpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.zip
cpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.tar.gz
cpython-ac8a7b9b6cbdb7522b34573a6c4f5117e27a1b6c.tar.bz2
gh-94401: Remove unneeded bz2 module state (#94402)
-rw-r--r--Modules/_bz2module.c62
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