summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2011-05-11 14:18:13 -0400
committerKurt B. Kaiser <kbk@shore.net>2011-05-11 14:18:13 -0400
commit02a8a3b01fc5bbd8b55ff883a21eaefb1e461ebe (patch)
tree84236dac095ad43acc771a172a0b7b4d2ed36004 /Modules
parentb3d0875ba55a7b8cb9c28c9bf91f7ff9669858e3 (diff)
parent5ce814245a4f35f740b87e88621472bbf9a30587 (diff)
downloadcpython-02a8a3b01fc5bbd8b55ff883a21eaefb1e461ebe.tar.gz
Merge from 3.2
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_tkinter.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 91b1b53ae8..6879975a3e 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -2022,7 +2022,19 @@ PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
for (i = 0; i < (argc - 1); i++) {
PyObject *s = PyUnicode_FromString(argv[i + 1]);
- if (!s || PyTuple_SetItem(arg, i, s)) {
+ if (!s) {
+ /* Is Tk leaking 0xC080 in %A - a "modified" utf-8 null? */
+ if (PyErr_ExceptionMatches(PyExc_UnicodeDecodeError) &&
+ !strcmp(argv[i + 1], "\xC0\x80")) {
+ PyErr_Clear();
+ /* Convert to "strict" utf-8 null */
+ s = PyUnicode_FromString("\0");
+ } else {
+ Py_DECREF(arg);
+ return PythonCmd_Error(interp);
+ }
+ }
+ if (PyTuple_SetItem(arg, i, s)) {
Py_DECREF(arg);
return PythonCmd_Error(interp);
}