nisresp_maplist *list;
char *dom;
CLIENT *cl, *clnt_create();
- char *server = "";
+ char *server = NULL;
int mapi = 0;
int err;
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 *
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;
Py_XDECREF(npattern);
return NULL;
}
+ Py_DECREF(group_name);
+ Py_DECREF(group_index);
++o; /* eat the '>' */
break;
}
PyObject *tran = NULL;
PyObject *gdict = NULL;
PyObject *npattern;
+ PyObject *retval = NULL;
if (!PyArg_ParseTuple(args, "S|S", &pattern, &tran))
return NULL;
Py_DECREF(pattern);
return NULL;
}
- return newregexobject(npattern, tran, pattern, gdict);
+ retval = newregexobject(npattern, tran, pattern, gdict);
+ Py_DECREF(npattern);
+ return retval;
}