From: Nadeem Vawda Date: Sun, 27 Jan 2013 13:01:42 +0000 (+0100) Subject: Issue #13886: Fix input() to not strip out supposedly-invalid input bytes. X-Git-Tag: v3.3.1rc1~280^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f02ea02c881e06029e8d44a5414682bc4b65fb8;p=python 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. --- diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index dab56cefd8..a3c8dcc18e 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -18,6 +18,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 c216cc9440..3543feb2e5 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,10 @@ What's New in Python 3.2.4 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 4d54dade5d..fd60377577 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -1068,7 +1068,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) {