From 5bf9b63c934f6fb20fd0e91ecee7cfae3674a2a0 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Fri, 11 Feb 2022 19:00:46 +0700
Subject: [PATCH] [*] Fixed work of CLI command handler.

---
 .../cellframe-sdk/net/src/wrapping_dap_app_cli_server.c  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/modules/cellframe-sdk/net/src/wrapping_dap_app_cli_server.c b/modules/cellframe-sdk/net/src/wrapping_dap_app_cli_server.c
index b98191cd..0db7ecf3 100644
--- a/modules/cellframe-sdk/net/src/wrapping_dap_app_cli_server.c
+++ b/modules/cellframe-sdk/net/src/wrapping_dap_app_cli_server.c
@@ -100,12 +100,13 @@ void element_py_func_del_all(){
 }
 
 static int wrapping_cmdfunc(int argc, char **argv, char **str_reply){
+    PyGILState_STATE state = PyGILState_Ensure();
     size_t id_str_replay = elements_str_reply_add(str_reply);
     PyObject *obj_argv = stringToPyList(argc, argv);
-    PyObject *obj_id_str_replay = PyLong_FromSize_t(id_str_replay);
-    PyObject *arglist = Py_BuildValue("OO", obj_argv, obj_id_str_replay);
-    Py_XINCREF(arglist);
+    PyObject *arglist = Py_BuildValue("On", obj_argv, id_str_replay);
+    Py_INCREF(arglist);
     PyObject *binden_obj_cmdfunc = element_py_func_get(argv[0]);
+    Py_INCREF(binden_obj_cmdfunc);
     PyObject *result = PyObject_CallObject(binden_obj_cmdfunc, arglist);
     if (!result){
         log_it(L_DEBUG, "Function can't called");
@@ -113,6 +114,8 @@ static int wrapping_cmdfunc(int argc, char **argv, char **str_reply){
     }
     Py_XDECREF(arglist);
     Py_XDECREF(obj_argv);
+    Py_XDECREF(binden_obj_cmdfunc);
+    PyGILState_Release(state);
     elements_str_reply_delete(id_str_replay);
     return 0;
 }
-- 
GitLab