mirror of
https://github.com/python/cpython.git
synced 2025-07-12 22:05:16 +00:00
Merged revisions 88530 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r88530 | victor.stinner | 2011-02-23 13:07:37 +0100 (mer., 23 févr. 2011) | 4 lines Issue #11272: Fix input() and sys.stdin for Windows newline On Windows, input() strips '\r' (and not only '\n'), and sys.stdin uses universal newline (replace '\r\n' by '\n'). ........
This commit is contained in:
parent
9f6cbe09cc
commit
02bfdb3f79
4 changed files with 49 additions and 6 deletions
|
@ -1621,6 +1621,7 @@ builtin_input(PyObject *self, PyObject *args)
|
|||
PyObject *stdin_encoding;
|
||||
char *stdin_encoding_str;
|
||||
PyObject *result;
|
||||
size_t len;
|
||||
|
||||
stdin_encoding = PyObject_GetAttrString(fin, "encoding");
|
||||
if (!stdin_encoding)
|
||||
|
@ -1685,19 +1686,23 @@ builtin_input(PyObject *self, PyObject *args)
|
|||
Py_DECREF(stdin_encoding);
|
||||
return NULL;
|
||||
}
|
||||
if (*s == '\0') {
|
||||
|
||||
len = strlen(s);
|
||||
if (len == 0) {
|
||||
PyErr_SetNone(PyExc_EOFError);
|
||||
result = NULL;
|
||||
}
|
||||
else { /* strip trailing '\n' */
|
||||
size_t len = strlen(s);
|
||||
else {
|
||||
if (len > PY_SSIZE_T_MAX) {
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"input: input too long");
|
||||
result = NULL;
|
||||
}
|
||||
else {
|
||||
result = PyUnicode_Decode(s, len-1, stdin_encoding_str, NULL);
|
||||
len--; /* strip trailing '\n' */
|
||||
if (len != 0 && s[len-1] == '\r')
|
||||
len--; /* strip trailing '\r' */
|
||||
result = PyUnicode_Decode(s, len, stdin_encoding_str, NULL);
|
||||
}
|
||||
}
|
||||
Py_DECREF(stdin_encoding);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue