From 3a80c4a29c9eca9699b5bfe80541bc413a83bcef Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 27 Apr 2001 21:35:01 +0000 Subject: [PATCH] (Adding this to the trunk as well.) 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: . This even though 'print x' to a file-like-object would correctly call the tp_str slot. --- Objects/object.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Objects/object.c b/Objects/object.c index 47907bcb1d7..1ace8f5b26c 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -196,7 +196,10 @@ PyObject_Print(PyObject *op, FILE *fp, int flags) fprintf(fp, "", 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); }