[Python-checkins] cpython (merge 3.2 -> 3.3): Issue #13886: Fix input() to not strip out supposedly-invalid input bytes.

nadeem.vawda python-checkins at python.org
Sun Jan 27 14:13:36 CET 2013


http://hg.python.org/cpython/rev/5c8732049dd5
changeset: 81776:5c8732049dd5
branch: 3.3
parent: 81772:07488c3c85f1
parent: 81775:cf0f450b3299
user: Nadeem Vawda <nadeem.vawda at gmail.com>
date: Sun Jan 27 14:13:25 2013 +0100
summary:
 Issue #13886: Fix input() to not strip out supposedly-invalid input bytes.
Also fix sporadic failures in test_builtin due to dependence on whether the
readline module has previously been imported.
files:
 Lib/test/test_builtin.py | 7 +++++++
 Misc/NEWS | 4 ++++
 Modules/readline.c | 2 +-
 3 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -20,6 +20,13 @@
 import pty, signal
 except ImportError:
 pty = signal = None
+# Importing this module has the side-effect of changing the behavior of input().
+# Ensure that we always use the readline version (if available), so we don't get
+# different results depending on what other tests have already imported.
+try:
+ import readline
+except ImportError:
+ pass
 
 
 class Squares:
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and Builtins
 -----------------
 
+- Issue #13886: Fix input() to not strip out input bytes that cannot be decoded
+ using the locale encoding. Also fix sporadic failures in test_builtin due to
+ dependence on whether the readline module has previously been imported.
+
 - Issue #10156: In the interpreter's initialization phase, unicode globals
 are now initialized dynamically as needed.
 
diff --git a/Modules/readline.c b/Modules/readline.c
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -1067,7 +1067,7 @@
 char *saved_locale = strdup(setlocale(LC_CTYPE, NULL));
 if (!saved_locale)
 Py_FatalError("not enough memory to save locale");
- setlocale(LC_CTYPE, "");
+ setlocale(LC_CTYPE, "C");
 #endif
 
 if (sys_stdin != rl_instream || sys_stdout != rl_outstream) {
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /