summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Objects/object.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/object.c b/Objects/object.c
index be3cce7..63c55ce 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -181,11 +181,13 @@ strobject(v)
INCREF(v);
return v;
}
+ else if (v->ob_type->tp_str != NULL)
+ return (*v->ob_type->tp_str)(v);
else {
- object *func = getattr(v, "__str__");
+ object *func;
object *args;
object *res;
- if (func == NULL) {
+ if (!is_instanceobject(v) || (func = getattr(v, "__str__")) == NULL) {
err_clear();
return reprobject(v);
}