]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
(Adding this to the trunk as well.)
authorGuido van Rossum <guido@python.org>
Fri, 27 Apr 2001 21:35:01 +0000 (21:35 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 27 Apr 2001 21:35:01 +0000 (21:35 +0000)
Fix a very old flaw in PyObject_Print().  Amazing!  When an object
type defines tp_str but not tp_repr, 'print x' to a real file
object would not call the tp_str slot but rather print a default style
representation: <foo object at 0x....>.  This even though 'print x' to
a file-like-object would correctly call the tp_str slot.

Objects/object.c

index 47907bcb1d7f558ad6aa621f3303365bd61f209d..1ace8f5b26c7b477c963661e39d3b31d896241db 100644 (file)
@@ -196,7 +196,10 @@ PyObject_Print(PyObject *op, FILE *fp, int flags)
                        fprintf(fp, "<refcnt %u at %p>",
                                op->ob_refcnt, op);
                else if (op->ob_type->tp_print == NULL) {
-                       if (op->ob_type->tp_repr == NULL) {
+                       if ((flags & Py_PRINT_RAW)
+                           ? (op->ob_type->tp_str == NULL)
+                           : (op->ob_type->tp_repr == NULL))
+                       {
                                fprintf(fp, "<%s object at %p>",
                                        op->ob_type->tp_name, op);
                        }