Commit d0db98fc authored by Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

#1688: On Windows, the input() prompt was not correctly displayed if it

contains non-ascii characters.

Reviewed by Benjamin Peterson.
parent 956ffd75
...@@ -12,6 +12,9 @@ What's New in Python 3.0 release candidate 2 ...@@ -12,6 +12,9 @@ What's New in Python 3.0 release candidate 2
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #1688: On Windows, the input() prompt was not correctly displayed if it
contains non-ascii characters.
Library Library
------- -------
......
...@@ -1597,12 +1597,29 @@ builtin_input(PyObject *self, PyObject *args) ...@@ -1597,12 +1597,29 @@ builtin_input(PyObject *self, PyObject *args)
else else
Py_DECREF(tmp); Py_DECREF(tmp);
if (promptarg != NULL) { 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) { if (po == NULL) {
Py_DECREF(stdin_encoding); Py_DECREF(stdin_encoding);
return NULL; return NULL;
} }
prompt = _PyUnicode_AsString(po); prompt = PyBytes_AsString(po);
if (prompt == NULL) { if (prompt == NULL) {
Py_DECREF(stdin_encoding); Py_DECREF(stdin_encoding);
Py_DECREF(po); Py_DECREF(po);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment