summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-07-11 17:32:48 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-07-11 17:32:48 (GMT)
commitfab65428d54759b6b7e5c16347ced72e1c19c017 (patch)
tree8cdd7dd718942e7aca463ed57a58594fe88065e7 /Modules
parentfe2e8395651beb4f8968562f6a4fc1f2a2465e1f (diff)
downloadcpython-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.c27
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;
}