]> granicus.if.org Git - python/commitdiff
Issue #13886: Fix input() to not strip out supposedly-invalid input bytes.
authorNadeem Vawda <nadeem.vawda@gmail.com>
Sun, 27 Jan 2013 13:01:42 +0000 (14:01 +0100)
committerNadeem Vawda <nadeem.vawda@gmail.com>
Sun, 27 Jan 2013 13:01:42 +0000 (14:01 +0100)
Also fix sporadic failures in test_builtin due to dependence on whether the
readline module has previously been imported.

Lib/test/test_builtin.py
Misc/NEWS
Modules/readline.c

index dab56cefd82462732cfc66f99f6b48e53c01dd89..a3c8dcc18e96220aa452ecdac26776df85801267 100644 (file)
@@ -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:
index c216cc9440068b51a1e592d0c7c17a9abc44a04f..3543feb2e569d4c06f32b1be01925a6e9db3da7b 100644 (file)
--- 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.
 
index 4d54dade5d3f80c21ef03e333c823778be3ccf4f..fd603775777d49cfdd2556032f69544b6c3c1875 100644 (file)
@@ -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) {