summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKurt B. Kaiser <kbk@shore.net>2011-05-11 16:24:17 (GMT)
committerKurt B. Kaiser <kbk@shore.net>2011-05-11 16:24:17 (GMT)
commite147806da9b138e53d86f0a2569a107f6a975834 (patch)
treec69f482841231160bf4b4af337b3f3dd76e5b8e8
parentba9c6645f795c7bf82ee097a240cbd060605afe7 (diff)
downloadcpython-e147806da9b138e53d86f0a2569a107f6a975834.zip
cpython-e147806da9b138e53d86f0a2569a107f6a975834.tar.gz
cpython-e147806da9b138e53d86f0a2569a107f6a975834.tar.bz2
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().
-rw-r--r--Lib/idlelib/NEWS.txt9
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/_tkinter.c14
3 files changed, 23 insertions, 4 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 6a031e1..d45941a 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -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.
diff --git a/Misc/NEWS b/Misc/NEWS
index b77a9a6..f065b5a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 8552575..438955e 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -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);
}