Skip to content

Commit a9a99c7

Browse files
committed
gh-135878: Fix crash in types.SimpleNamespace.__repr__
1 parent 2060089 commit a9a99c7

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fixes a crash of :class:`types.SimpleNamespace` on free-threading builds,
2+
when several threads were calling its :meth:`~object.__repr__` method at the
3+
same time.

Objects/namespaceobject.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ namespace_repr(PyObject *ns)
124124
if (PyUnicode_Check(key) && PyUnicode_GET_LENGTH(key) > 0) {
125125
PyObject *value, *item;
126126

127-
value = PyDict_GetItemWithError(d, key);
128-
if (value != NULL) {
127+
if (PyDict_GetItemRef(d, key, &value) == 1) {
129128
item = PyUnicode_FromFormat("%U=%R", key, value);
130129
if (item == NULL) {
131130
loop_error = 1;
@@ -135,7 +134,7 @@ namespace_repr(PyObject *ns)
135134
Py_DECREF(item);
136135
}
137136
}
138-
else if (PyErr_Occurred()) {
137+
else {
139138
loop_error = 1;
140139
}
141140
}

0 commit comments

Comments
 (0)