diff options
author | Barry Warsaw <barry@python.org> | 1997-01-09 22:22:05 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 1997-01-09 22:22:05 (GMT) |
commit | 4bc9d3956059fd8ba6e41e8550336dc6de60bb02 (patch) | |
tree | 49357906a5f371ffd6b570dbcd64babf1a3ebe35 | |
parent | 4b76ba3280634886356782c0ecc66ac08895826a (diff) | |
download | cpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.zip cpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.tar.gz cpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.tar.bz2 |
Nailed a couple of memory leaks, caught by Purify.
-rw-r--r-- | Modules/grpmodule.c | 2 | ||||
-rw-r--r-- | Modules/nismodule.c | 23 | ||||
-rw-r--r-- | Modules/pwdmodule.c | 1 | ||||
-rw-r--r-- | Modules/regexmodule.c | 7 |
4 files changed, 25 insertions, 8 deletions
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c index ccdba12..0199b6b 100644 --- a/Modules/grpmodule.c +++ b/Modules/grpmodule.c @@ -51,6 +51,7 @@ static PyObject *mkgrent(p) Py_DECREF(w); return NULL; } + Py_DECREF(x); } v = Py_BuildValue("(sslO)", p->gr_name, @@ -112,6 +113,7 @@ static PyObject *grp_getgrall(self, args) Py_DECREF(d); return NULL; } + Py_DECREF(v); } return d; } diff --git a/Modules/nismodule.c b/Modules/nismodule.c index a00a0e6..5866026 100644 --- a/Modules/nismodule.c +++ b/Modules/nismodule.c @@ -292,7 +292,7 @@ nis_maplist () nisresp_maplist *list; char *dom; CLIENT *cl, *clnt_create(); - char *server = ""; + char *server = NULL; int mapi = 0; int err; @@ -301,25 +301,32 @@ nis_maplist () return NULL; } - while (!strcmp("", server) && aliases[mapi].map != 0L) { + while (!server && aliases[mapi].map != 0L) { yp_master (dom, aliases[mapi].map, &server); mapi++; } - if (!strcmp("", server)) { + if (!server) { PyErr_SetString(NisError, "No NIS master found for any map"); return NULL; } cl = clnt_create(server, YPPROG, YPVERS, "tcp"); if (cl == NULL) { PyErr_SetString(NisError, clnt_spcreateerror(server)); - return NULL; + goto finally; } list = nisproc_maplist_2 (&dom, cl); + clnt_destroy(cl); if (list == NULL) - return NULL; + goto finally; if (list->stat != NIS_TRUE) - return NULL; + goto finally; + + PyMem_DEL(server); return list->maps; + + finally: + PyMem_DEL(server); + return NULL; } static PyObject * @@ -337,12 +344,14 @@ nis_maps (self, args) if ((list = PyList_New(0)) == NULL) return NULL; for (maps = maps->next; maps; maps = maps->next) { - if (PyList_Append (list, PyString_FromString (maps->map)) < 0) + PyObject *str = PyString_FromString(maps->map); + if (!str || PyList_Append(list, str) < 0) { Py_DECREF(list); list = NULL; break; } + Py_DECREF(str); } /* XXX Shouldn't we free the list of maps now? */ return list; diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c index 69a81ef..4b09312 100644 --- a/Modules/pwdmodule.c +++ b/Modules/pwdmodule.c @@ -109,6 +109,7 @@ pwd_getpwall(self, args) Py_DECREF(d); return NULL; } + Py_DECREF(v); } return d; } diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c index 981a6e9..695c2d2 100644 --- a/Modules/regexmodule.c +++ b/Modules/regexmodule.c @@ -518,6 +518,8 @@ symcomp(pattern, gdict) Py_XDECREF(npattern); return NULL; } + Py_DECREF(group_name); + Py_DECREF(group_index); ++o; /* eat the '>' */ break; } @@ -573,6 +575,7 @@ regex_symcomp(self, args) PyObject *tran = NULL; PyObject *gdict = NULL; PyObject *npattern; + PyObject *retval = NULL; if (!PyArg_ParseTuple(args, "S|S", &pattern, &tran)) return NULL; @@ -583,7 +586,9 @@ regex_symcomp(self, args) Py_DECREF(pattern); return NULL; } - return newregexobject(npattern, tran, pattern, gdict); + retval = newregexobject(npattern, tran, pattern, gdict); + Py_DECREF(npattern); + return retval; } |