From: Zbigniew Jędrzejewski-Szmek Date: Thu, 15 Aug 2013 16:51:20 +0000 (-0400) Subject: systemd-python: check for oom, give nicer error messages X-Git-Tag: v207~120 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=31f49d022aee9bbb356e52e5483f182d7ffa8d2f systemd-python: check for oom, give nicer error messages --- diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 3b1003ba7..bc5db1904 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -75,7 +75,7 @@ static int strv_converter(PyObject* obj, void *_result) { assert(result); if (!obj) - goto cleanup; + return 0; if (obj == Py_None) { *result = NULL; @@ -87,6 +87,10 @@ static int strv_converter(PyObject* obj, void *_result) { 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; @@ -154,7 +158,7 @@ static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) 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; diff --git a/src/python-systemd/login.c b/src/python-systemd/login.c index 1e86193f6..dd2edbca0 100644 --- a/src/python-systemd/login.c +++ b/src/python-systemd/login.c @@ -159,7 +159,7 @@ static int Monitor_init(Monitor *self, PyObject *args, PyObject *keywds) int r; static const char* const kwlist[] = {"category", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "|z", (char**) kwlist, + if (!PyArg_ParseTupleAndKeywords(args, keywds, "|z:__init__", (char**) kwlist, &category)) return -1;