args to call_object must be tuple or NULL
diff --git a/Objects/classobject.c b/Objects/classobject.c
index 6ef17b2..9870b6e 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -344,11 +344,7 @@
 	INCREF(inst);
 	err_fetch(&error_type, &error_value, &error_traceback);
 	if ((del = instance_getattr1(inst, "__del__")) != NULL) {
-		object *args = newtupleobject(0);
-		object *res = args;
-		if (res != NULL)
-			res = call_object(del, args);
-		XDECREF(args);
+		object *res = call_object(del, (object *)NULL);
 		DECREF(del);
 		XDECREF(res);
 		/* XXX If __del__ raised an exception, it is ignored! */
@@ -692,7 +688,7 @@
 	func = instance_getattr(inst, "__getitem__");
 	if (func == NULL)
 		return NULL;
-	arg = newintobject((long)i);
+	arg = mkvalue("(i)", i);
 	if (arg == NULL) {
 		DECREF(func);
 		return NULL;
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 44003bc..b3e3378 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -553,7 +553,7 @@
 		return cmpobject(* (object **) v, * (object **) w);
 
 	/* Call the user-supplied comparison function */
-	t = mkvalue("OO", * (object **) v, * (object **) w);
+	t = mkvalue("(OO)", * (object **) v, * (object **) w);
 	if (t == NULL)
 		return 0;
 	res = call_object(comparefunc, t);
diff --git a/Objects/object.c b/Objects/object.c
index d7110ae..1643ec6 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -177,7 +177,7 @@
 {
 	if (v == NULL)
 		return newstringobject("<NULL>");
-	if (is_stringobject(v)) {
+	else if (is_stringobject(v)) {
 		INCREF(v);
 		return v;
 	}
@@ -185,19 +185,13 @@
 		return (*v->ob_type->tp_str)(v);
 	else {
 		object *func;
-		object *args;
 		object *res;
-		if (!is_instanceobject(v) || (func = getattr(v, "__str__")) == NULL) {
+		if (!is_instanceobject(v) ||
+		    (func = getattr(v, "__str__")) == NULL) {
 			err_clear();
 			return reprobject(v);
 		}
-		args = newtupleobject(0);
-		if (args == NULL)
-			res = NULL;
-		else {
-			res = call_object(func, args);
-			DECREF(args);
-		}
+		res = call_object(func, (object *)NULL);
 		DECREF(func);
 		return res;
 	}