mirror of https://github.com/python/cpython
bpo-24658: os.read() reuses _PY_READ_MAX (GH-10657)
os_read_impl() now also truncates the size to _PY_READ_MAX on macOS, to avoid to allocate a larger buffer even if _Py_read() is limited to _PY_READ_MAX bytes (ex: INT_MAX on macOS).
This commit is contained in:
parent
4d73ae7761
commit
9a0d7a7648
|
@ -8410,11 +8410,7 @@ os_read_impl(PyObject *module, int fd, Py_ssize_t length)
|
||||||
return posix_error();
|
return posix_error();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MS_WINDOWS
|
length = Py_MIN(length, _PY_READ_MAX);
|
||||||
/* On Windows, the count parameter of read() is an int */
|
|
||||||
if (length > INT_MAX)
|
|
||||||
length = INT_MAX;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
buffer = PyBytes_FromStringAndSize((char *)NULL, length);
|
buffer = PyBytes_FromStringAndSize((char *)NULL, length);
|
||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
|
|
Loading…
Reference in New Issue