summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2022-04-20 14:10:41 (GMT)
committerGitHub <noreply@github.com>2022-04-20 14:10:41 (GMT)
commitf571c26fc1805790cacb73e70cbb0291204d41e7 (patch)
treed77bf567738a2def3efc0a8f85b7145e723cb443 /Objects
parentf92bcfe6dea7d52dcc7077585d8818e8a0209604 (diff)
downloadcpython-f571c26fc1805790cacb73e70cbb0291204d41e7.zip
cpython-f571c26fc1805790cacb73e70cbb0291204d41e7.tar.gz
cpython-f571c26fc1805790cacb73e70cbb0291204d41e7.tar.bz2
gh-91632: Fix generic_alias_iterator to be finalized at exit. (GH-91727)
Diffstat (limited to 'Objects')
-rw-r--r--Objects/genericaliasobject.c6
-rw-r--r--Objects/object.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/Objects/genericaliasobject.c b/Objects/genericaliasobject.c
index dc585de..7059c40 100644
--- a/Objects/genericaliasobject.c
+++ b/Objects/genericaliasobject.c
@@ -683,7 +683,9 @@ ga_iter_clear(PyObject *self) {
return 0;
}
-static PyTypeObject Py_GenericAliasIterType = {
+// gh-91632: _Py_GenericAliasIterType is exported to be cleared
+// in _PyTypes_FiniTypes.
+PyTypeObject _Py_GenericAliasIterType = {
PyVarObject_HEAD_INIT(&PyType_Type, 0)
.tp_name = "generic_alias_iterator",
.tp_basicsize = sizeof(gaiterobject),
@@ -697,7 +699,7 @@ static PyTypeObject Py_GenericAliasIterType = {
static PyObject *
ga_iter(PyObject *self) {
- gaiterobject *gi = PyObject_GC_New(gaiterobject, &Py_GenericAliasIterType);
+ gaiterobject *gi = PyObject_GC_New(gaiterobject, &_Py_GenericAliasIterType);
if (gi == NULL) {
return NULL;
}
diff --git a/Objects/object.c b/Objects/object.c
index 8adb506..29880f6 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1834,6 +1834,7 @@ _PyTypes_InitState(PyInterpreterState *interp)
#ifdef MS_WINDOWS
extern PyTypeObject PyHKEY_Type;
#endif
+extern PyTypeObject _Py_GenericAliasIterType;
static PyTypeObject* static_types[] = {
// The two most important base types: must be initialized first and
@@ -1923,6 +1924,7 @@ static PyTypeObject* static_types[] = {
&_PyAsyncGenWrappedValue_Type,
&_PyContextTokenMissing_Type,
&_PyCoroWrapper_Type,
+ &_Py_GenericAliasIterType,
&_PyHamtItems_Type,
&_PyHamtKeys_Type,
&_PyHamtValues_Type,