summaryrefslogtreecommitdiff
path: root/Objects/dictobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/dictobject.c')
-rw-r--r--Objects/dictobject.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 0d25739f72..bb4ea1f5f9 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -3853,14 +3853,22 @@ static PyObject *
dictview_repr(_PyDictViewObject *dv)
{
PyObject *seq;
- PyObject *result;
+ PyObject *result = NULL;
+ Py_ssize_t rc;
+ rc = Py_ReprEnter((PyObject *)dv);
+ if (rc != 0) {
+ return rc > 0 ? PyUnicode_FromString("...") : NULL;
+ }
seq = PySequence_List((PyObject *)dv);
- if (seq == NULL)
- return NULL;
-
+ if (seq == NULL) {
+ goto Done;
+ }
result = PyUnicode_FromFormat("%s(%R)", Py_TYPE(dv)->tp_name, seq);
Py_DECREF(seq);
+
+Done:
+ Py_ReprLeave((PyObject *)dv);
return result;
}