From: Fred Drake Date: Sat, 4 Aug 2001 03:11:25 +0000 (+0000) Subject: Plug a memory leak in Py_InitModule4(): when PyDict_SetItemString() failed, X-Git-Tag: v2.2a3~819 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=289898cdbb1d4526ce45e600ed2843a14d1feb0d;p=thirdparty%2FPython%2Fcpython.git Plug a memory leak in Py_InitModule4(): when PyDict_SetItemString() failed, the object being inserted was not being DECREFed. This closes SF bug #444486. --- diff --git a/Python/modsupport.c b/Python/modsupport.c index eb0818cc95ca..8fad54a32335 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -60,14 +60,18 @@ Py_InitModule4(char *name, PyMethodDef *methods, char *doc, v = PyCFunction_New(ml, passthrough); if (v == NULL) return NULL; - if (PyDict_SetItemString(d, ml->ml_name, v) != 0) + if (PyDict_SetItemString(d, ml->ml_name, v) != 0) { + Py_DECREF(v); return NULL; + } Py_DECREF(v); } if (doc != NULL) { v = PyString_FromString(doc); - if (v == NULL || PyDict_SetItemString(d, "__doc__", v) != 0) + if (v == NULL || PyDict_SetItemString(d, "__doc__", v) != 0) { + Py_DECREF(v); return NULL; + } Py_DECREF(v); } return m;