Mercurial > cpython-lru_cache-weakref
diff Modules/_tkinter.c @ 70039:82cfbe2ddfbb 3.1
Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError.
With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused IDLE to
exit. Converted to valid Unicode null in PythonCmd().
| author | Kurt B. Kaiser <kbk@shore.net> |
|---|---|
| date | Wed, 11 May 2011 12:24:17 -0400 |
| parents | f197407bdba2 |
| children | 65a6a2f8721f |
line wrap: on
line diff
--- a/Modules/_tkinter.c Wed May 11 00:57:29 2011 +0200 +++ b/Modules/_tkinter.c Wed May 11 12:24:17 2011 -0400 @@ -2023,7 +2023,19 @@ 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); }
