]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix core dump from pow(x,y,0).
authorGuido van Rossum <guido@python.org>
Fri, 6 Dec 1996 20:14:43 +0000 (20:14 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 6 Dec 1996 20:14:43 +0000 (20:14 +0000)
Make gcc -Wall happy.

Objects/intobject.c

index e1ad157999448c0760222e2ae0d2da6cda5ef0c2..62649209bfc2513ea4792846dee8123d6b409bc7 100644 (file)
@@ -342,7 +342,7 @@ int_mul(v, w)
                b = -b;
                if (b < 0) {
                        /* Largest negative */
-                       if (a == 0 || a == 1 && s == 1) {
+                       if (a == 0 || (a == 1 && s == 1)) {
                                x = a*b;
                                goto ok;
                        }
@@ -427,7 +427,7 @@ i_divmod(x, y, p_xdivy, p_xmody)
                        xdivy = xi / yi;
        }
        xmody = xi - xdivy*yi;
-       if (xmody < 0 && yi > 0 || xmody > 0 && yi < 0) {
+       if ((xmody < 0 && yi > 0) || (xmody > 0 && yi < 0)) {
                xmody += yi;
                xdivy -= 1;
        }
@@ -476,8 +476,7 @@ int_pow(v, w, z)
        intobject *z;
 {
 #if 1
-       register long iv, iw, iz, ix, temp, prev;
-       int zset = 0;
+       register long iv, iw, iz=0, ix, temp, prev;
        iv = v->ob_ival;
        iw = w->ob_ival;
        if (iw < 0) {
@@ -486,7 +485,10 @@ int_pow(v, w, z)
        }
        if ((object *)z != None) {
                iz = z->ob_ival;
-               zset = 1;
+               if (iz == 0) {
+                       err_setstr(ValueError, "pow(x, y, z) with z==0");
+                       return NULL;
+               }
        }
        /*
         * XXX: The original exponentiation code stopped looping
@@ -513,13 +515,13 @@ int_pow(v, w, z)
                temp *= temp;   /* Square the value of temp */
                if (prev!=0 && temp/prev!=prev)
                        return err_ovf("integer pow()");
-               if (zset) {
+               if (iz) {
                        /* If we did a multiplication, perform a modulo */
                        ix = ix % iz;
                        temp = temp % iz;
                }
        }
-       if (zset) {
+       if (iz) {
                object *t1, *t2;
                long int div, mod;
                t1=newintobject(ix);