diff --git a/Objects/object.c b/Objects/object.c
index 29269d0..023477f 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -255,13 +255,17 @@
 do_cmp(v, w)
 	PyObject *v, *w;
 {
+	long c;
 	/* __rcmp__ actually won't be called unless __cmp__ isn't defined,
 	   because the check in cmpobject() reverses the objects first.
 	   This is intentional -- it makes no sense to define cmp(x,y)
 	   different than -cmp(y,x). */
 	if (PyInstance_Check(v) || PyInstance_Check(w))
 		return PyInstance_DoBinOp(v, w, "__cmp__", "__rcmp__", do_cmp);
-	return PyInt_FromLong((long)PyObject_Compare(v, w));
+	c = PyObject_Compare(v, w);
+	if (c && PyErr_Occurred())
+		return NULL;
+	return PyInt_FromLong(c);
 }
 
 int
@@ -269,25 +273,25 @@
 	PyObject *v, *w;
 {
 	PyTypeObject *tp;
+	if (v == NULL || w == NULL) {
+		PyErr_BadInternalCall();
+		return -1;
+	}
 	if (v == w)
 		return 0;
-	if (v == NULL)
-		return -1;
-	if (w == NULL)
-		return 1;
 	if (PyInstance_Check(v) || PyInstance_Check(w)) {
 		PyObject *res;
 		int c;
 		if (!PyInstance_Check(v))
 			return -PyObject_Compare(w, v);
 		res = do_cmp(v, w);
-		if (res == NULL) {
-			PyErr_Clear();
-			return (v < w) ? -1 : 1;
-		}
+		if (res == NULL)
+			return -1;
 		if (!PyInt_Check(res)) {
 			Py_DECREF(res);
-			return (v < w) ? -1 : 1;
+			PyErr_SetString(PyExc_TypeError,
+					"comparison did not return an int");
+			return -1;
 		}
 		c = PyInt_AsLong(res);
 		Py_DECREF(res);
@@ -296,11 +300,8 @@
 	if ((tp = v->ob_type) != w->ob_type) {
 		if (tp->tp_as_number != NULL &&
 				w->ob_type->tp_as_number != NULL) {
-			if (PyNumber_Coerce(&v, &w) != 0) {
-				PyErr_Clear();
-				/* XXX Should report the error,
-				   XXX but the interface isn't there... */
-			}
+			if (PyNumber_Coerce(&v, &w) != 0)
+				return -1;
 			else {
 				int cmp = (*v->ob_type->tp_compare)(v, w);
 				Py_DECREF(v);
