diff Modules/mpzmodule.c @ 24806:9b06f44bd4a3 legacy-trunk

Fix memory leaks reported by valgrind
author Neal Norwitz <nnorwitz@gmail.com>
date Wed, 14 Aug 2002 02:03:50 +0000
parents f66b3a3509c7
children
line wrap: on
line diff
--- a/Modules/mpzmodule.c	Wed Aug 14 01:45:37 2002 +0000
+++ b/Modules/mpzmodule.c	Wed Aug 14 02:03:50 2002 +0000
@@ -961,7 +961,7 @@
 {
 	PyObject *base, *exp, *mod;
 	mpzobject *mpzbase = NULL, *mpzexp = NULL, *mpzmod = NULL;
-	mpzobject *z;
+	mpzobject *z = NULL;
 	int tstres;
 
 
@@ -975,10 +975,15 @@
 		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 @@
 		Py_DECREF(mpzbase);
 		Py_DECREF(mpzexp);
 		Py_DECREF(mpzmod);
+		Py_DECREF(z);
 		PyErr_SetString(PyExc_ValueError, "modulus cannot be 0");
 		return NULL;
 	}