SF bug #422108 - Error in rich comparisons.
2.1.1 bugfix candidate too.
Fix a bad (albeit unlikely) return value in try_rich_to_3way_compare().
Also document do_cmp()'s return values.
diff --git a/Objects/object.c b/Objects/object.c
index f952405..c6d0591 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -447,7 +447,7 @@
 	for (i = 0; i < 3; i++) {
 		switch (try_rich_compare_bool(v, w, tries[i].op)) {
 		case -1:
-			return -1;
+			return -2;
 		case 1:
 			return tries[i].outcome;
 		}
@@ -585,6 +585,12 @@
 
 #define CHECK_TYPES(o) PyType_HasFeature((o)->ob_type, Py_TPFLAGS_CHECKTYPES)
 
+/* Do a 3-way comparison, by hook or by crook.  Return:
+   -2 for an exception;
+   -1 if v < w;
+    0 if v == w;
+    1 if v > w;
+*/
 static int
 do_cmp(PyObject *v, PyObject *w)
 {