Issue #19512: Py_ReprEnter() and Py_ReprLeave() now use an identifier for the

"Py_Repr" dictionary key
This commit is contained in:
Victor Stinner 2013-11-06 18:57:29 +01:00
parent 95701bdf40
commit 7a07e451a4

View File

@ -1969,7 +1969,7 @@ _PyObject_DebugTypeStats(FILE *out)
See dictobject.c and listobject.c for examples of use.
*/
#define KEY "Py_Repr"
_Py_IDENTIFIER(Py_Repr);
int
Py_ReprEnter(PyObject *obj)
@ -1981,12 +1981,12 @@ Py_ReprEnter(PyObject *obj)
dict = PyThreadState_GetDict();
if (dict == NULL)
return 0;
list = PyDict_GetItemString(dict, KEY);
list = _PyDict_GetItemId(dict, &PyId_Py_Repr);
if (list == NULL) {
list = PyList_New(0);
if (list == NULL)
return -1;
if (PyDict_SetItemString(dict, KEY, list) < 0)
if (_PyDict_SetItemId(dict, &PyId_Py_Repr, list) < 0)
return -1;
Py_DECREF(list);
}
@ -2014,7 +2014,7 @@ Py_ReprLeave(PyObject *obj)
if (dict == NULL)
goto finally;
list = PyDict_GetItemString(dict, KEY);
list = _PyDict_GetItemId(dict, &PyId_Py_Repr);
if (list == NULL || !PyList_Check(list))
goto finally;