Nailed a couple of memory leaks, caught by Purify.
This commit is contained in:
parent
4b76ba3280
commit
4bc9d39560
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -109,6 +109,7 @@ pwd_getpwall(self, args)
|
|||
Py_DECREF(d);
|
||||
return NULL;
|
||||
}
|
||||
Py_DECREF(v);
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue