diff --git a/Objects/classobject.c b/Objects/classobject.c
index 551bdce..0ae6a61 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -353,10 +353,10 @@
 	init = instance_getattr1(inst, initstr);
 	if (init == NULL) {
 		err_clear();
-		if (arg != NULL && (!is_tupleobject(arg) ||
-				    gettuplesize(arg) != 0)
-		    || kw != NULL && (!is_dictobject(kw) ||
-				      getdictsize(kw) != 0)) {
+		if ((arg != NULL && (!is_tupleobject(arg) ||
+				     gettuplesize(arg) != 0))
+		    || (kw != NULL && (!is_dictobject(kw) ||
+				      getdictsize(kw) != 0))) {
 			err_setstr(TypeError,
 				   "this constructor takes no arguments");
 			DECREF(inst);
@@ -411,19 +411,32 @@
 		delstr = newstringobject("__del__");
 	if ((del = instance_getattr1(inst, delstr)) != NULL) {
 		object *res = call_object(del, (object *)NULL);
-		DECREF(del);
 		if (res == NULL) {
-			PyObject *f = sysget("stderr");
+			object *f, *t, *v, *tb;
+ 			err_fetch(&t, &v, &tb);
+			f = sysget("stderr");
 			err_clear();
 			if (f != NULL) {
-				writestring("exception in ", f);
-				writestring(PyString_AsString(
-					inst->in_class->cl_name), f);
-				writestring(".__del__() ignored\n", f);
+				writestring("Exception ", f);
+				if (t) {
+					writeobject(t, f, Py_PRINT_RAW);
+					if (v && v != None) {
+						writestring(": ", f);
+						writeobject(v, f, 0);
+					}
+				}
+				writestring(" in ", f);
+				writeobject(del, f, 0);
+				writestring(" ignored\n", f);
+				err_clear(); /* Just in case */
 			}
+			Py_XDECREF(t);
+			Py_XDECREF(v);
+			Py_XDECREF(tb);
 		}
 		else
 			DECREF(res);
+		DECREF(del);
 	}
 	/* Restore the saved exception and undo the temporary revival */
 	err_restore(error_type, error_value, error_traceback);
@@ -632,7 +645,6 @@
 	long outcome;
 	result = instance_compare1(inst, other);
 	if (result == NULL || !is_intobject(result)) {
-	error:
 		err_clear();
 		return (inst < other) ? -1 : 1;
 	}
