summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: acee3e5)
raw | patch | inline | side by side (parent: acee3e5)
author | Florian Forster <octo@collectd.org> | |
Tue, 8 Dec 2015 12:54:17 +0000 (13:54 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Tue, 8 Dec 2015 12:55:09 +0000 (13:55 +0100) |
CID: 37984
src/python.c | patch | blob | history |
diff --git a/src/python.c b/src/python.c
index 10d283d95b1c7a6ee1938a1cc40fdcbcc70fa60b..44292f90a997de45364ca369ca230e6bb0b5185a 100644 (file)
--- a/src/python.c
+++ b/src/python.c
list = PyObject_CallFunction(cpy_format_exception, "NNN", type, value, traceback); /* New reference. Steals references from "type", "value" and "traceback". */
if (list)
l = PyObject_Length(list);
+
for (i = 0; i < l; ++i) {
- char *s;
PyObject *line;
-
+ char const *msg;
+ char *cpy;
+
line = PyList_GET_ITEM(list, i); /* Borrowed reference. */
Py_INCREF(line);
- s = strdup(cpy_unicode_or_bytes_to_string(&line));
+
+ msg = cpy_unicode_or_bytes_to_string(&line);
Py_DECREF(line);
- if (s[strlen(s) - 1] == '\n')
- s[strlen(s) - 1] = 0;
+ if (msg == NULL)
+ continue;
+
+ cpy = strdup(msg);
+ if (cpy == NULL)
+ continue;
+
+ if (cpy[strlen(cpy) - 1] == '\n')
+ cpy[strlen(cpy) - 1] = 0;
+
Py_BEGIN_ALLOW_THREADS
- ERROR("%s", s);
+ ERROR("%s", cpy);
Py_END_ALLOW_THREADS
- free(s);
+
+ free(cpy);
}
+
Py_XDECREF(list);
PyErr_Clear();
}
@@ -753,7 +766,7 @@ static PyObject *cpy_unregister_generic(cpy_callback_t **list_head, PyObject *ar
for (tmp = *list_head; tmp; prev = tmp, tmp = tmp->next)
if (strcmp(name, tmp->name) == 0)
break;
-
+
Py_DECREF(arg);
if (tmp == NULL) {
PyErr_Format(PyExc_RuntimeError, "Unable to unregister %s callback '%s'.", desc, name);