BUG/MINOR: contrib/spoa-server: Updating references to free in case of failure
When we encounter a failure, all previously borrowed references should
be freed. Especially if the program is not failing immediately
This patch must be backported as far as 2.0.
diff --git a/contrib/spoa_server/ps_python.c b/contrib/spoa_server/ps_python.c
index 474c75b..6843cdc 100644
--- a/contrib/spoa_server/ps_python.c
+++ b/contrib/spoa_server/ps_python.c
@@ -567,6 +567,7 @@
key = PY_STRING_FROM_STRING("name");
if (key == NULL) {
Py_DECREF(kw_args);
+ Py_DECREF(ent);
PyErr_Print();
return 0;
}
@@ -632,6 +633,7 @@
if (func == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
PyErr_Print();
return 0;
}
@@ -639,6 +641,7 @@
if (ip_dict == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
PyErr_Print();
return 0;
@@ -647,6 +650,7 @@
if (ip_name == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
Py_DECREF(ip_dict);
PyErr_Print();
@@ -656,6 +660,7 @@
if (ip_value == NULL) {
Py_DECREF(kw_args);
Py_DECREF(ent);
+ Py_DECREF(key);
Py_DECREF(func);
Py_DECREF(ip_dict);
Py_DECREF(ip_name);
@@ -666,6 +671,10 @@
Py_DECREF(ip_name);
Py_DECREF(ip_value);
if (ret == -1) {
+ Py_DECREF(kw_args);
+ Py_DECREF(ent);
+ Py_DECREF(key);
+ Py_DECREF(func);
Py_DECREF(ip_dict);
PyErr_Print();
return 0;