summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pydoc/test_pydoc.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-02-17 12:55:43 (GMT)
committerGitHub <noreply@github.com>2024-02-17 12:55:43 (GMT)
commita5eaa14584da470eda3d27579d5ca88f86b7a153 (patch)
tree401646f648c64885b721878655add7151541112b /Lib/test/test_pydoc/test_pydoc.py
parent2c39d00a56209dd1f34bfaf9688e9ab560cd3281 (diff)
downloadcpython-a5eaa14584da470eda3d27579d5ca88f86b7a153.zip
cpython-a5eaa14584da470eda3d27579d5ca88f86b7a153.tar.gz
cpython-a5eaa14584da470eda3d27579d5ca88f86b7a153.tar.bz2
[3.11] gh-95782: Fix io.BufferedReader.tell() etc. being able to return offsets < 0 (GH-99709) (GH-115600)
lseek() always returns 0 for character pseudo-devices like `/dev/urandom` (for other non-regular files, e.g. `/dev/stdin`, it always returns -1, to which CPython reacts by raising appropriate exceptions). They are thus technically seekable despite not having seek semantics. When calling read() on e.g. an instance of `io.BufferedReader` that wraps such a file, `BufferedReader` reads ahead, filling its buffer, creating a discrepancy between the number of bytes read and the internal `tell()` always returning 0, which previously resulted in e.g. `BufferedReader.tell()` or `BufferedReader.seek()` being able to return positions < 0 even though these are supposed to be always >= 0. Invariably keep the return value non-negative by returning max(former_return_value, 0) instead, and add some corresponding tests. (cherry picked from commit 26800cf25a0970d46934fa9a881c0ef6881d642b) Co-authored-by: 6t8k <58048945+6t8k@users.noreply.github.com>
Diffstat (limited to 'Lib/test/test_pydoc/test_pydoc.py')
0 files changed, 0 insertions, 0 deletions