]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] GH-132983: remove empty_bytes from _zstd module state (GH-133785) (#133788)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 9 May 2025 20:42:55 +0000 (22:42 +0200)
committerGitHub <noreply@github.com>
Fri, 9 May 2025 20:42:55 +0000 (20:42 +0000)
GH-132983: remove empty_bytes from _zstd module state (GH-133785)
(cherry picked from commit 98e2c3af4794d6c6ebe47b20badbd31c542d944e)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Modules/_zstd/_zstdmodule.c
Modules/_zstd/_zstdmodule.h
Modules/_zstd/decompressor.c

index 4004bbb34613933fa845a8bff4ee659623d84e86..1200d200ae0995028425a12a1c27453035c289dd 100644 (file)
@@ -587,11 +587,6 @@ do {                                                                         \
     _zstd_state* const mod_state = get_zstd_state(m);
 
     /* Reusable objects & variables */
-    mod_state->empty_bytes = PyBytes_FromStringAndSize(NULL, 0);
-    if (mod_state->empty_bytes == NULL) {
-        return -1;
-    }
-
     mod_state->CParameter_type = NULL;
     mod_state->DParameter_type = NULL;
 
@@ -694,8 +689,6 @@ _zstd_traverse(PyObject *module, visitproc visit, void *arg)
 {
     _zstd_state* const mod_state = get_zstd_state(module);
 
-    Py_VISIT(mod_state->empty_bytes);
-
     Py_VISIT(mod_state->ZstdDict_type);
     Py_VISIT(mod_state->ZstdCompressor_type);
 
@@ -713,8 +706,6 @@ _zstd_clear(PyObject *module)
 {
     _zstd_state* const mod_state = get_zstd_state(module);
 
-    Py_CLEAR(mod_state->empty_bytes);
-
     Py_CLEAR(mod_state->ZstdDict_type);
     Py_CLEAR(mod_state->ZstdCompressor_type);
 
index 58622a5cb48b5ea740c849eee292d5abf5144cb6..80f4e7e58d5265768169872f33c2ee114bbf6bc6 100644 (file)
@@ -35,8 +35,6 @@ extern PyType_Spec zstd_compressor_type_spec;
 extern PyType_Spec zstd_decompressor_type_spec;
 
 struct _zstd_state {
-    PyObject *empty_bytes;
-
     PyTypeObject *ZstdDict_type;
     PyTypeObject *ZstdCompressor_type;
     PyTypeObject *ZstdDecompressor_type;
index d141e68efded26ebd2426caf8dc823378fe85306..b3d91e102859da4fc70d5e2a082cd1d3de0c95ed 100644 (file)
@@ -290,13 +290,7 @@ decompress_impl(ZstdDecompressor *self, ZSTD_inBuffer *in,
     /* The first AFE check for setting .at_frame_edge flag */
     if (type == TYPE_ENDLESS_DECOMPRESSOR) {
         if (self->at_frame_edge && in->pos == in->size) {
-            _zstd_state* const mod_state = PyType_GetModuleState(Py_TYPE(self));
-            if (mod_state == NULL) {
-                return NULL;
-            }
-            ret = mod_state->empty_bytes;
-            Py_INCREF(ret);
-            return ret;
+            return Py_GetConstant(Py_CONSTANT_EMPTY_BYTES);
         }
     }
 
@@ -747,16 +741,8 @@ _zstd_ZstdDecompressor_unused_data_get_impl(ZstdDecompressor *self)
 {
     PyObject *ret;
 
-    /* Thread-safe code */
-    Py_BEGIN_CRITICAL_SECTION(self);
-
     if (!self->eof) {
-        _zstd_state* const mod_state = PyType_GetModuleState(Py_TYPE(self));
-        if (mod_state == NULL) {
-            return NULL;
-        }
-        ret = mod_state->empty_bytes;
-        Py_INCREF(ret);
+        return Py_GetConstant(Py_CONSTANT_EMPTY_BYTES);
     }
     else {
         if (self->unused_data == NULL) {
@@ -772,8 +758,6 @@ _zstd_ZstdDecompressor_unused_data_get_impl(ZstdDecompressor *self)
         }
     }
 
-    Py_END_CRITICAL_SECTION();
-
     return ret;
 }