diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2023-01-03 15:29:41 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2023-01-07 22:14:56 +0900 |
commit | 4ce11cc30df1805459a615960fdec204a975548a (patch) | |
tree | 084f1e1fa404bdf0d082b1a58acf392b5d177326 /sip/tdecore/tdeapplication.sip | |
parent | 065f41b4908b11278d4334e8c85150ec0fd4a9f6 (diff) | |
download | pytde-4ce11cc30df1805459a615960fdec204a975548a.tar.gz pytde-4ce11cc30df1805459a615960fdec204a975548a.zip |
Drop python2 support.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'sip/tdecore/tdeapplication.sip')
-rw-r--r-- | sip/tdecore/tdeapplication.sip | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/sip/tdecore/tdeapplication.sip b/sip/tdecore/tdeapplication.sip index 1f568a8..4f167b4 100644 --- a/sip/tdecore/tdeapplication.sip +++ b/sip/tdecore/tdeapplication.sip @@ -400,10 +400,9 @@ typedef ulong Atom; // Convert a Python argv list to a conventional C argc count and argv array. char **pyArgvToC(PyObject *argvlist,int *argcp) { - int argc; char **argv; - argc = PyList_Size(argvlist); + int argc = PyList_Size(argvlist); // Allocate space for two copies of the argument pointers, plus the // terminating NULL. @@ -413,22 +412,30 @@ char **pyArgvToC(PyObject *argvlist,int *argcp) // Convert the list. for (int a = 0; a < argc; ++a) { - char *arg; - - // Get the argument and allocate memory for it. - if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL || - (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL) - return NULL; + PyObject *argObject = PyList_GET_ITEM(argvlist, a); + char *arg; + + if (PyUnicode_Check(argObject)) + { + arg = tqstrdup(sipString_AsUTF8String(&argObject)); + } + else if (SIPBytes_Check(argObject)) + { + arg = tqstrdup(SIPBytes_AS_STRING(argObject)); + } + else + { + return NULL; + } - // Copy the argument and save a pointer to it. - strcpy(argv[a],arg); - argv[a + argc + 1] = argv[a]; + argv[a] = argv[a + argc + 1] = arg; } - argv[argc + argc + 1] = argv[argc] = NULL; - - *argcp = argc; - + argv[argc] = argv[argc + argc + 1] = NULL; + if (argcp) + { + *argcp = argc; + } return argv; } |