]> granicus.if.org Git - python/commitdiff
Use Py_Repr{Enter,Leave} to display recursive lists in finite space.
authorGuido van Rossum <guido@python.org>
Fri, 10 Apr 1998 22:47:27 +0000 (22:47 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 10 Apr 1998 22:47:27 +0000 (22:47 +0000)
(Jeremy will hardly recognize his patch :-)

Objects/listobject.c

index 8bec8afc7072af2ac366d5a80509d1909d5b89ff..29c50f496592c12308b563224e7716562c39cbfe 100644 (file)
@@ -231,14 +231,25 @@ list_print(op, fp, flags)
        int flags;
 {
        int i;
+
+       i = Py_ReprEnter((PyObject*)op);
+       if (i != 0) {
+               if (i < 0)
+                       return i;
+               fprintf(fp, "[...]");
+               return 0;
+       }
        fprintf(fp, "[");
        for (i = 0; i < op->ob_size; i++) {
                if (i > 0)
                        fprintf(fp, ", ");
-               if (PyObject_Print(op->ob_item[i], fp, 0) != 0)
+               if (PyObject_Print(op->ob_item[i], fp, 0) != 0) {
+                       Py_ReprLeave((PyObject *)op);
                        return -1;
+               }
        }
        fprintf(fp, "]");
+       Py_ReprLeave((PyObject *)op);
        return 0;
 }
 
@@ -248,6 +259,13 @@ list_repr(v)
 {
        PyObject *s, *comma;
        int i;
+
+       i = Py_ReprEnter((PyObject*)v);
+       if (i != 0) {
+               if (i > 0)
+                       return PyString_FromString("[...]");
+               return NULL;
+       }
        s = PyString_FromString("[");
        comma = PyString_FromString(", ");
        for (i = 0; i < v->ob_size && s != NULL; i++) {
@@ -257,6 +275,7 @@ list_repr(v)
        }
        Py_XDECREF(comma);
        PyString_ConcatAndDel(&s, PyString_FromString("]"));
+       Py_ReprLeave((PyObject *)v);
        return s;
 }