Skip to content

_struct.Struct should be immutable, missing Py_TPFLAGS_IMMUTABLETYPE flag #94254

Closed
@kumaraditya303

Description

@kumaraditya303

In Python 3.8:

Python 3.8.12 (default, Oct  4 2021, 15:56:52) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import _struct
>>> _struct.Struct.x = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'Struct'
>>> 

On main:

Python 3.12.0a0 (heads/gh-94207-fix-struct-module-leak:9d41baebd0, Jun 25 2022, 07:23:49) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import _struct
>>> _struct.Struct.x=1
>>> _struct.Struct.x
1

This happens because _struct.Struct is missing Py_TPFLAGS_IMMUTABLETYPE in type flags.

cc: @erlend-aasland @encukou

Metadata

Metadata

Labels

extension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions