summaryrefslogtreecommitdiffstats
path: root/Modules/_io
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2020-02-21 17:57:26 (GMT)
committerGitHub <noreply@github.com>2020-02-21 17:57:26 (GMT)
commitfd5116c0e77aec05f67fb24f10562ac920648035 (patch)
treee980fc8e6aa1ed8d62312fb17dbf01935c1e6e04 /Modules/_io
parentd4d17fd2cf69e7c8f4cd03fbf2d575370945b952 (diff)
downloadcpython-fd5116c0e77aec05f67fb24f10562ac920648035.zip
cpython-fd5116c0e77aec05f67fb24f10562ac920648035.tar.gz
cpython-fd5116c0e77aec05f67fb24f10562ac920648035.tar.bz2
bpo-35950: Raise UnsupportedOperation in BufferedReader.truncate() (GH-18586)
The truncate() method of io.BufferedReader() should raise UnsupportedOperation when it is called on a read-only io.BufferedReader() instance. https://bugs.python.org/issue35950 Automerge-Triggered-By: @methane
Diffstat (limited to 'Modules/_io')
-rw-r--r--Modules/_io/bufferedio.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 6f55577..a09082c 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -1315,15 +1315,19 @@ _io__Buffered_truncate_impl(buffered *self, PyObject *pos)
PyObject *res = NULL;
CHECK_INITIALIZED(self)
+ CHECK_CLOSED(self, "truncate of closed file")
+ if (!self->writable) {
+ return bufferediobase_unsupported("truncate");
+ }
if (!ENTER_BUFFERED(self))
return NULL;
- if (self->writable) {
- res = buffered_flush_and_rewind_unlocked(self);
- if (res == NULL)
- goto end;
- Py_CLEAR(res);
+ res = buffered_flush_and_rewind_unlocked(self);
+ if (res == NULL) {
+ goto end;
}
+ Py_CLEAR(res);
+
res = PyObject_CallMethodOneArg(self->raw, _PyIO_str_truncate, pos);
if (res == NULL)
goto end;