]> granicus.if.org Git - python/commitdiff
Fix memory leaks reported by valgrind
authorNeal Norwitz <nnorwitz@gmail.com>
Wed, 14 Aug 2002 02:03:50 +0000 (02:03 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Wed, 14 Aug 2002 02:03:50 +0000 (02:03 +0000)
Modules/mpzmodule.c

index 5974df14d7b7a97e9384459b031fde423bd8c6e9..4641298991115101cb1b3a3151f150d8fe463fe8 100644 (file)
@@ -961,7 +961,7 @@ MPZ_powm(PyObject *self, PyObject *args)
 {
        PyObject *base, *exp, *mod;
        mpzobject *mpzbase = NULL, *mpzexp = NULL, *mpzmod = NULL;
-       mpzobject *z;
+       mpzobject *z = NULL;
        int tstres;
 
 
@@ -975,10 +975,15 @@ MPZ_powm(PyObject *self, PyObject *args)
                Py_XDECREF(mpzbase);
                Py_XDECREF(mpzexp);
                Py_XDECREF(mpzmod);
+               Py_XDECREF(z);
                return NULL;
        }
 
        if ((tstres=mpz_cmp_ui(&mpzexp->mpz, (unsigned long int)0)) == 0) {
+               Py_DECREF(mpzbase);
+               Py_DECREF(mpzexp);
+               Py_DECREF(mpzmod);
+               Py_DECREF(z);
                Py_INCREF(mpz_value_one);
                return (PyObject *)mpz_value_one;
        }
@@ -987,6 +992,7 @@ MPZ_powm(PyObject *self, PyObject *args)
                Py_DECREF(mpzbase);
                Py_DECREF(mpzexp);
                Py_DECREF(mpzmod);
+               Py_DECREF(z);
                PyErr_SetString(PyExc_ValueError, "modulus cannot be 0");
                return NULL;
        }