Kaydet (Commit) 3a80c4a2 authored tarafından Guido van Rossum's avatar Guido van Rossum

(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: <foo object at 0x....>.  This even though 'print x' to
a file-like-object would correctly call the tp_str slot.
üst e9bcb5c7
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment