Skip to content
Snippets Groups Projects
Commit a974d1f2 authored by dmitriy.gerasimov's avatar dmitriy.gerasimov
Browse files

Merge branch 'bugs-3221' into 'master'

[*] Fixed bugs-3221

See merge request libdap-app-cli-python!3
parents 2ad40148 3c9add0f
No related branches found
No related tags found
1 merge request!26Support 3689
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <Python.h> #include <Python.h>
#include "dap_common.h" #include "dap_common.h"
#include "dap_app_cli.h" #include "dap_app_cli.h"
#include "dap_strfuncs.h"
typedef struct PyAppCli{ typedef struct PyAppCli{
......
...@@ -12,28 +12,32 @@ ...@@ -12,28 +12,32 @@
PyObject* dap_app_cli_main_py(PyObject *self, PyObject *args) PyObject* dap_app_cli_main_py(PyObject *self, PyObject *args)
{ {
(void) self; (void) self;
char *l_app_name = NULL; char *l_app_name = NULL;
char *l_socket_path = NULL; char *l_socket_path = NULL;
int l_argc = 0; int l_argc = 0;
char ** l_argv = NULL; char **l_argv = NULL;
PyObject* l_args_py = NULL; PyObject *l_argv_py = NULL;
if (!PyArg_ParseTuple(args, "ssO", &l_app_name,&l_socket_path, &l_args_py))
return NULL;
Py_ssize_t l_args_py_size = PyList_Size(l_args_py); PyObject *l_from_list_obj = NULL;
if (l_args_py_size > 1){ PyObject *l_value_obj = NULL;
l_argc = (int)l_args_py_size; if (!PyArg_ParseTuple(args, "ssO", &l_app_name, &l_socket_path, & l_argv_py))
l_argv = DAP_NEW_SIZE(char*, l_argc); return NULL;
PyObject *l_obj_from_list = NULL; Py_ssize_t l_argv_size_py = PyList_Size(l_argv_py);
for (int i = 0; i < l_argc; i++){ l_argc = (int)l_argv_size_py;
l_obj_from_list = PyList_GetItem(l_args_py, i); if (l_argv_size_py > 1){
if (PyUnicode_Check(l_obj_from_list)){ l_argv = PyMem_Calloc((size_t)l_argv_size_py, sizeof(char**));
l_argv[i] = (char*)PyUnicode_AsUTF8(PyList_GetItem(l_args_py, i)); for (Py_ssize_t i=0; i < l_argv_size_py; i++){
} l_from_list_obj = PyList_GetItem(l_argv_py, i);
Py_XDECREF(l_obj_from_list); l_value_obj = PyList_GetItem(l_argv_py, i);
l_argv[i] = dap_strdup(PyUnicode_AsUTF8(l_value_obj));
} }
return PyLong_FromLong((long)dap_app_cli_main(l_app_name, l_socket_path, l_argc, l_argv)); int res = dap_app_cli_main(l_app_name, l_socket_path, l_argc, l_argv);
DAP_FREE(l_argv); for (Py_ssize_t i=0; i < l_argv_size_py; i++){
}else DAP_FREE(l_argv[i]);
}
PyMem_Free(l_argv);
return PyLong_FromLong(res);
}
else
return PyLong_FromLong(-1024); return PyLong_FromLong(-1024);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment