From bbbd13348169486bd13ae7bec2ec6ad0522e79c4 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Sun, 1 Mar 2020 23:27:47 +0700
Subject: [PATCH] [*] Fixed Handler arguments command line. Input argument have
 type Unicode not bytes.

---
 src/libdap-app-cli-python.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/libdap-app-cli-python.c b/src/libdap-app-cli-python.c
index 234a7c3..c883af1 100644
--- a/src/libdap-app-cli-python.c
+++ b/src/libdap-app-cli-python.c
@@ -21,14 +21,18 @@ PyObject* dap_app_cli_main_py(PyObject *self, PyObject *args)
             return NULL;
 
     Py_ssize_t l_args_py_size = PyList_Size(l_args_py);
-    if ( l_args_py_size ){
-        l_argc = l_args_py_size;
-        l_argv = DAP_NEW_Z_SIZE(char*, sizeof(char**)*l_argc  );
-        for (  int i = 0; i< l_argc; i++){
-            l_argv[i] = PyBytes_AsString(PyList_GetItem(l_args_py, i));
+    if (l_args_py_size > 1){
+        l_argc = (int)l_args_py_size;
+        l_argv = calloc(sizeof(char*), (l_argc-1));
+        PyObject *l_obj_from_list = NULL;
+        for (int i = 0; i < l_argc; i++){
+            l_obj_from_list = PyList_GetItem(l_args_py, i);
+            if (PyUnicode_Check(l_obj_from_list)){
+                l_argv[i] = (char*)PyUnicode_AsUTF8(PyList_GetItem(l_args_py, i));
+            }
+            Py_XDECREF(l_obj_from_list);
         }
-        return PyLong_FromLong((long) dap_app_cli_main(l_app_name,l_socket_path,l_argc,l_argv));
+        return PyLong_FromLong((long)dap_app_cli_main(l_app_name, l_socket_path, l_argc, l_argv));
     }else
         return PyLong_FromLong(-1024);
-
 }
-- 
GitLab