From bdd034947c4a3a6f8c41af9bf6e62b7a74b4ebbc Mon Sep 17 00:00:00 2001 From: Gilchrist Dadaglo Date: Tue, 8 Dec 2020 14:37:14 +0000 Subject: [PATCH] BUG/MEDIUM: spoa/python: Fixing references to None As per https://docs.python.org/3/c-api/none.html, None has to be treated exactly like other objects for reference counting. So, when we use it, we need to INCREF and when we are done, DECREF This patch must be backported as far as 2.0. --- contrib/spoa_server/ps_python.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/spoa_server/ps_python.c b/contrib/spoa_server/ps_python.c index 20861d6e3..04b21f1ef 100644 --- a/contrib/spoa_server/ps_python.c +++ b/contrib/spoa_server/ps_python.c @@ -634,6 +634,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct switch (args[i].value.type) { case SPOE_DATA_T_NULL: + Py_INCREF(Py_None); value = Py_None; break; case SPOE_DATA_T_BOOL: @@ -722,6 +723,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct value = PY_BYTES_FROM_STRING_AND_SIZE(args[i].value.u.buffer.str, args[i].value.u.buffer.len); break; default: + Py_INCREF(Py_None); value = Py_None; break; } @@ -786,9 +788,7 @@ static int ps_python_exec_message(struct worker *w, void *ref, int nargs, struct PyErr_Print(); return 0; } - if (result != Py_None) { - Py_DECREF(result); - } + Py_DECREF(result); return 1; } -- 2.47.3