summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNadeem Vawda <nadeem.vawda@gmail.com>2013-01-27 13:13:25 (GMT)
committerNadeem Vawda <nadeem.vawda@gmail.com>2013-01-27 13:13:25 (GMT)
commit60cc32382f0a568723da8cb3c1b3fc532ab41d58 (patch)
treef74f179918d09d19201174aecea2b8caa0289c92
parent3f5db3940ff71428d1eecb3d4eebe68d9c3d216d (diff)
parent6f02ea02c881e06029e8d44a5414682bc4b65fb8 (diff)
downloadcpython-60cc32382f0a568723da8cb3c1b3fc532ab41d58.zip
cpython-60cc32382f0a568723da8cb3c1b3fc532ab41d58.tar.gz
cpython-60cc32382f0a568723da8cb3c1b3fc532ab41d58.tar.bz2
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.
-rw-r--r--Lib/test/test_builtin.py7
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/readline.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index bf005c5..704fe9c 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -20,6 +20,13 @@ try:
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
index c58ab66..1976bba 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@ What's New in Python 3.3.1?
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
index a710652..02fc4c2 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -1067,7 +1067,7 @@ call_readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
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) {