summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1997-01-09 22:22:05 (GMT)
committerBarry Warsaw <barry@python.org>1997-01-09 22:22:05 (GMT)
commit4bc9d3956059fd8ba6e41e8550336dc6de60bb02 (patch)
tree49357906a5f371ffd6b570dbcd64babf1a3ebe35 /Modules
parent4b76ba3280634886356782c0ecc66ac08895826a (diff)
downloadcpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.zip
cpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.tar.gz
cpython-4bc9d3956059fd8ba6e41e8550336dc6de60bb02.tar.bz2
Nailed a couple of memory leaks, caught by Purify.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/grpmodule.c2
-rw-r--r--Modules/nismodule.c23
-rw-r--r--Modules/pwdmodule.c1
-rw-r--r--Modules/regexmodule.c7
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;
}