summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/bltinmodule.c21
2 files changed, 22 insertions, 2 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index f4b302a..c08c8a7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 3.0 release candidate 2
Core and Builtins
-----------------
+- Issue #1688: On Windows, the input() prompt was not correctly displayed if it
+ contains non-ascii characters.
+
Library
-------
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 7c08765..0b96dc1 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1597,12 +1597,29 @@ builtin_input(PyObject *self, PyObject *args)
else
Py_DECREF(tmp);
if (promptarg != NULL) {
- po = PyObject_Str(promptarg);
+ PyObject *stringpo;
+ PyObject *stdout_encoding;
+ stdout_encoding = PyObject_GetAttrString(fout,
+ "encoding");
+ if (stdout_encoding == NULL) {
+ Py_DECREF(stdin_encoding);
+ return NULL;
+ }
+ stringpo = PyObject_Str(promptarg);
+ if (stringpo == NULL) {
+ Py_DECREF(stdin_encoding);
+ Py_DECREF(stdout_encoding);
+ return NULL;
+ }
+ po = PyUnicode_AsEncodedString(stringpo,
+ _PyUnicode_AsString(stdout_encoding), NULL);
+ Py_DECREF(stdout_encoding);
+ Py_DECREF(stringpo);
if (po == NULL) {
Py_DECREF(stdin_encoding);
return NULL;
}
- prompt = _PyUnicode_AsString(po);
+ prompt = PyBytes_AsString(po);
if (prompt == NULL) {
Py_DECREF(stdin_encoding);
Py_DECREF(po);