Merge from 3.1

This commit is contained in:
Kurt B. Kaiser 2011-05-11 13:48:54 -04:00
commit bc3e13818b
3 changed files with 22 additions and 4 deletions

View File

@ -1,18 +1,21 @@
What's New in IDLE 3.1.4? 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 - <Home> toggle failing on Tk 8.5, causing IDLE exits and strange selection
behavior. Issue 4676. Improve selection extension behaviour. 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? What's New in IDLE 3.1b1?
========================= =========================
*Release date: 27-Jun-09* *Release date: 06-May-09*
- Use of 'filter' in keybindingDialog.py was causing custom key assignment to - Use of 'filter' in keybindingDialog.py was causing custom key assignment to
fail. Patch 5707 amaury.forgeotdarc. fail. Patch 5707 amaury.forgeotdarc.

View File

@ -85,6 +85,9 @@ Core and Builtins
Library 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 #11169: compileall module uses repr() to format filenames and paths to - Issue #11169: compileall module uses repr() to format filenames and paths to
escape surrogate characters and show spaces. escape surrogate characters and show spaces.

View File

@ -2023,7 +2023,19 @@ PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
for (i = 0; i < (argc - 1); i++) { for (i = 0; i < (argc - 1); i++) {
PyObject *s = PyUnicode_FromString(argv[i + 1]); 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); Py_DECREF(arg);
return PythonCmd_Error(interp); return PythonCmd_Error(interp);
} }