Code

python: Fix double-free bug.
authorSven Trenkel <collectd@semidefinite.de>
Sun, 4 Oct 2015 00:05:24 +0000 (00:05 +0000)
committerSven Trenkel <collectd@semidefinite.de>
Sun, 4 Oct 2015 00:05:24 +0000 (00:05 +0000)
src/python.c

index b7cc5b9150e4b10eef61e251218258124da95c2b..210d785c847d9d5b6e5577efdca0001163ffd9c7 100644 (file)
@@ -302,7 +302,7 @@ void cpy_log_exception(const char *context) {
                Py_XDECREF(traceback);
                return;
        }
-       list = PyObject_CallFunction(cpy_format_exception, "NNN", type, value, traceback); /* New reference. */
+       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) {
@@ -322,9 +322,6 @@ void cpy_log_exception(const char *context) {
        }
        Py_XDECREF(list);
        PyErr_Clear();
-       Py_DECREF(type);
-       Py_XDECREF(value);
-       Py_XDECREF(traceback);
 }
 
 static int cpy_read_callback(user_data_t *data) {