diff --git a/Objects/intobject.c b/Objects/intobject.c index f020453049f..ca2961e8357 100644 --- a/Objects/intobject.c +++ b/Objects/intobject.c @@ -523,6 +523,8 @@ int_pow(v, w, z) XDECREF(t2); return(NULL); } + DECREF(t1); + DECREF(t2); ix=mod; } return newintobject(ix); diff --git a/Objects/longobject.c b/Objects/longobject.c index 1829c3dee72..ef3f332b2db 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -552,7 +552,9 @@ x_divrem(v1, w1, prem) } } /* for j, k */ - if (a != NULL) { + if (a == NULL) + *prem = NULL; + else { a = long_normalize(a); *prem = divrem1(v, d, &d); /* d receives the (unused) remainder */ @@ -1001,7 +1003,7 @@ long_pow(a, b, c) break; } } - if (a == NULL) + if (a == NULL || z == NULL) break; } XDECREF(a);