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().
This commit is contained in:
parent
ba9c6645f7
commit
e147806da9
|
@ -1,18 +1,21 @@
|
|||
What's New in IDLE 3.1.4?
|
||||
=========================
|
||||
|
||||
*Release date: XX-XXX-XX*
|
||||
*Release date: 15-May-11*
|
||||
|
||||
- Issue #1028: Ctrl-space binding to show completions was causing IDLE to exit.
|
||||
Tk < 8.5 was sending invalid Unicode null; replaced with valid null.
|
||||
|
||||
- <Home> toggle failing on Tk 8.5, causing IDLE exits and strange selection
|
||||
behavior. Issue 4676. Improve selection extension behaviour.
|
||||
- <Home> toggle non-functional when NumLock set on Windows. Issue 3851.
|
||||
|
||||
- <Home> toggle non-functional when NumLock set on Windows. Issue 3851.
|
||||
|
||||
|
||||
What's New in IDLE 3.1b1?
|
||||
=========================
|
||||
|
||||
*Release date: XX-XXX-09*
|
||||
*Release date: 06-May-09*
|
||||
|
||||
- Use of 'filter' in keybindingDialog.py was causing custom key assignment to
|
||||
fail. Patch 5707 amaury.forgeotdarc.
|
||||
|
|
|
@ -69,6 +69,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- 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().
|
||||
|
||||
- Issue #10419: Fix build_scripts command of distutils to handle correctly
|
||||
non-ASCII scripts. Open and write the script in binary mode, but ensure that
|
||||
the shebang is decodable from UTF-8 and from the encoding of the script.
|
||||
|
|
|
@ -2023,7 +2023,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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue