BUG/MEDIUM: spoa/python: Fixing PyObject_Call positional arguments

As per https://docs.python.org/3/c-api/object.html#c.PyObject_Call,
positional arguments should be an empty tuple when not used.
Previously the code had a dictionary instead of tuple. This commit is to
fix it and use tuple to avoid unexpected consequences

This patch must be backported as far as 2.0.
This commit is contained in:
Gilchrist Dadaglo 2020-12-08 14:37:13 +00:00 committed by Christopher Faulet
parent d1c0cf80bc
commit 042f697a0f
1 changed files with 5 additions and 5 deletions

View File

@ -43,7 +43,7 @@ static PyObject *module_ipaddress;
static PyObject *ipv4_address;
static PyObject *ipv6_address;
static PyObject *spoa_error;
static PyObject *empty_array;
static PyObject *empty_tuple;
static struct worker *worker;
static int ps_python_start_worker(struct worker *w);
@ -522,8 +522,8 @@ static int ps_python_start_worker(struct worker *w)
return 0;
}
empty_array = PyDict_New();
if (empty_array == NULL) {
empty_tuple = PyTuple_New(0);
if (empty_tuple == NULL) {
PyErr_Print();
return 0;
}
@ -710,7 +710,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct
PyErr_Print();
return 0;
}
value = PyObject_Call(func, empty_array, ip_dict);
value = PyObject_Call(func, empty_tuple, ip_dict);
Py_DECREF(func);
Py_DECREF(ip_dict);
break;
@ -780,7 +780,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct
return 0;
}
result = PyObject_Call(python_ref, empty_array, fkw);
result = PyObject_Call(python_ref, empty_tuple, fkw);
Py_DECREF(fkw);
if (result == NULL) {
PyErr_Print();