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

contains non-ascii characters.

Reviewed by Benjamin Peterson.
This commit is contained in:
Amaury Forgeot d'Arc 2008-09-21 21:49:01 +00:00
parent 956ffd75af
commit d0db98fcd8
2 changed files with 22 additions and 2 deletions

View File

@ -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
-------

View File

@ -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);