diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-07-11 17:32:48 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-07-11 17:32:48 (GMT) |
commit | fab65428d54759b6b7e5c16347ced72e1c19c017 (patch) | |
tree | 8cdd7dd718942e7aca463ed57a58594fe88065e7 /Modules | |
parent | fe2e8395651beb4f8968562f6a4fc1f2a2465e1f (diff) | |
download | cpython-fab65428d54759b6b7e5c16347ced72e1c19c017.zip cpython-fab65428d54759b6b7e5c16347ced72e1c19c017.tar.gz cpython-fab65428d54759b6b7e5c16347ced72e1c19c017.tar.bz2 |
Issue #18101: Tcl.split() now process Unicode strings nested in a tuple as it
do with byte strings.
Added tests for Tcl.split() and tcl.splitline().
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_tkinter.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 7872df3..aed42ac 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -547,6 +547,33 @@ SplitObj(PyObject *arg) return Split(PyString_AsString(arg)); /* Fall through, returning arg. */ } + else if (PyUnicode_Check(arg)) { + int argc; + char **argv; + char *list; + PyObject *s = PyUnicode_AsUTF8String(arg); + + if (s == NULL) { + Py_INCREF(arg); + return arg; + } + list = PyString_AsString(s); + + if (list == NULL || + Tcl_SplitList((Tcl_Interp *)NULL, list, &argc, &argv) != TCL_OK) { + Py_DECREF(s); + Py_INCREF(arg); + return arg; + } + Tcl_Free(FREECAST argv); + if (argc > 1) { + PyObject *v = Split(list); + Py_DECREF(s); + return v; + } + Py_DECREF(s); + /* Fall through, returning arg. */ + } Py_INCREF(arg); return arg; } |