From: Amaury Forgeot d'Arc Date: Sun, 21 Sep 2008 21:49:01 +0000 (+0000) Subject: #1688: On Windows, the input() prompt was not correctly displayed if it X-Git-Tag: v3.0rc2~164 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d0db98fcd869605f28dc600bfeba032565e31855;p=python #1688: On Windows, the input() prompt was not correctly displayed if it contains non-ascii characters. Reviewed by Benjamin Peterson. --- diff --git a/Misc/NEWS b/Misc/NEWS index f4b302a845..c08c8a7395 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 7c08765b31..0b96dc1a1d 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);