};
#endif
+/**
+ * Convert a Python sequence object into a strv (char**), and
+ * None into a NULL pointer.
+ */
static int strv_converter(PyObject* obj, void *_result) {
char ***result = _result;
Py_ssize_t i, len;
assert(result);
if (!obj)
- goto cleanup;
+ return 0;
+
+ if (obj == Py_None) {
+ *result = NULL;
+ return 1;
+ }
if (!PySequence_Check(obj))
return 0;
len = PySequence_Length(obj);
*result = new0(char*, len + 1);
+ if (!*result) {
+ set_error(-ENOMEM, NULL, NULL);
+ return 0;
+ }
for (i = 0; i < len; i++) {
PyObject *item;
char **files = NULL;
static const char* const kwlist[] = {"flags", "path", "files", NULL};
- if (!PyArg_ParseTupleAndKeywords(args, keywds, "|izO&", (char**) kwlist,
+ if (!PyArg_ParseTupleAndKeywords(args, keywds, "|izO&:__init__", (char**) kwlist,
&flags, &path, strv_converter, &files))
return -1;