* classobject.c: in instance_lenth, test result of call_object
  for exception before using it.  Fixed a few other places where the
  outcome of calling sq_length wasn't tested for exceptions
  (bltinmodule.c, ceval.c).
diff --git a/Objects/classobject.c b/Objects/classobject.c
index e3b12c6..0661e81 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -324,6 +324,8 @@
 		return -1;
 	res = call_object(func, (object *)NULL);
 	DECREF(func);
+	if (res == NULL)
+		return -1;
 	if (is_intobject(res)) {
 		outcome = getintvalue(res);
 		if (outcome < 0)
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index a6e02be..85fd58e 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -412,6 +412,8 @@
 		return NULL;
 	}
 	n = (*sq->sq_length)(v);
+	if (n < 0)
+		return NULL;
 	if (n == 0) {
 		err_setstr(ValueError, "min() or max() of empty sequence");
 		return NULL;
diff --git a/Python/ceval.c b/Python/ceval.c
index d3a732a..86ee6cf 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1881,6 +1881,8 @@
 	}
 	i = getintvalue(w);
 	n = (*sq->sq_length)(v);
+	if (n < 0)
+		return NULL; /* Exception */
 	if (i >= n)
 		return NULL; /* End of loop */
 	return (*sq->sq_item)(v, i);