[Python-checkins] bpo-24658: os.read() reuses _PY_READ_MAX (GH-10657)
Miss Islington (bot)
webhook-mailer at python.org
Thu Nov 22 09:17:38 EST 2018
https://github.com/python/cpython/commit/18f3327d9a99163a658697465eb00c31f86535eb
commit: 18f3327d9a99163a658697465eb00c31f86535eb
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-11-22T06:17:34-08:00
summary:
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).
(cherry picked from commit 9a0d7a7648547ffb77144bf2480155f6d7940dea)
Co-authored-by: Victor Stinner <vstinner at redhat.com>
files:
M Modules/posixmodule.c
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 8ff487d8cc1f..dbd534cab06a 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -8021,11 +8021,7 @@ os_read_impl(PyObject *module, int fd, Py_ssize_t length)
return posix_error();
}
-#ifdef MS_WINDOWS
- /* On Windows, the count parameter of read() is an int */
- if (length > INT_MAX)
- length = INT_MAX;
-#endif
+ length = Py_MIN(length, _PY_READ_MAX);
buffer = PyBytes_FromStringAndSize((char *)NULL, length);
if (buffer == NULL)
More information about the Python-checkins
mailing list