diff --git a/Objects/classobject.c b/Objects/classobject.c index e3b12c68f6e..0661e810c86 100644 --- a/Objects/classobject.c +++ b/Objects/classobject.c @@ -324,6 +324,8 @@ instance_length(inst) 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 a6e02bed2d6..85fd58ecee5 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -412,6 +412,8 @@ min_max(v, sign) 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 d3a732a62ee..86ee6cfc23f 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1881,6 +1881,8 @@ loop_subscript(v, w) } 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);