[3.14] gh-132983: Make zstd types immutable (GH-133784) (#133857)

gh-132983: Make zstd types immutable (GH-133784)
(cherry picked from commit 1a87b6e9ae)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2025-05-11 01:02:44 +02:00 committed by GitHub
parent da1e5c434b
commit 1e8a534533
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 2 deletions

View file

@ -679,6 +679,9 @@ do { \
ADD_INT_CONST_TO_TYPE(mod_state->ZstdCompressor_type,
"FLUSH_FRAME", ZSTD_e_end);
/* Make ZstdCompressor immutable (set Py_TPFLAGS_IMMUTABLETYPE) */
PyType_Freeze(mod_state->ZstdCompressor_type);
#undef ADD_TYPE
#undef ADD_INT_MACRO
#undef ADD_ZSTD_COMPRESSOR_INT_CONST

View file

@ -729,6 +729,9 @@ static PyType_Slot zstdcompressor_slots[] = {
PyType_Spec zstd_compressor_type_spec = {
.name = "compression.zstd.ZstdCompressor",
.basicsize = sizeof(ZstdCompressor),
// Py_TPFLAGS_IMMUTABLETYPE is not used here as several
// associated constants need to be added to the type.
// PyType_Freeze is called later to set the flag.
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
.slots = zstdcompressor_slots,
};

View file

@ -902,6 +902,7 @@ static PyType_Slot ZstdDecompressor_slots[] = {
PyType_Spec zstd_decompressor_type_spec = {
.name = "compression.zstd.ZstdDecompressor",
.basicsize = sizeof(ZstdDecompressor),
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE
| Py_TPFLAGS_HAVE_GC,
.slots = ZstdDecompressor_slots,
};

View file

@ -278,6 +278,7 @@ static PyType_Slot zstddict_slots[] = {
PyType_Spec zstd_dict_type_spec = {
.name = "compression.zstd.ZstdDict",
.basicsize = sizeof(ZstdDict),
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE
| Py_TPFLAGS_HAVE_GC,
.slots = zstddict_slots,
};