Issue #23796: peak and read1 methods of BufferedReader now raise ValueError
if they called on a closed object. Patch by John Hergenroeder.
This commit is contained in:
parent
1aa5e1d63e
commit
d10d6ae2fa
|
@ -1191,6 +1191,14 @@ class BufferedReaderTest(unittest.TestCase, CommonBufferedTests):
|
|||
self.assertEqual(rawio._extraneous_reads, 0,
|
||||
"failed for {}: {} != 0".format(n, rawio._extraneous_reads))
|
||||
|
||||
def test_read_on_closed(self):
|
||||
# Issue #23796
|
||||
b = io.BufferedReader(io.BytesIO(b"12"))
|
||||
b.read(1)
|
||||
b.close()
|
||||
self.assertRaises(ValueError, b.peek)
|
||||
self.assertRaises(ValueError, b.read1, 1)
|
||||
|
||||
|
||||
class CBufferedReaderTest(BufferedReaderTest, SizeofTest):
|
||||
tp = io.BufferedReader
|
||||
|
|
|
@ -40,6 +40,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #23796: peak and read1 methods of BufferedReader now raise ValueError
|
||||
if they called on a closed object. Patch by John Hergenroeder.
|
||||
|
||||
- Issue #21795: smtpd now supports the 8BITMIME extension whenever
|
||||
the new *decode_data* constructor argument is set to False.
|
||||
|
||||
|
|
|
@ -871,6 +871,8 @@ _io__Buffered_peek_impl(buffered *self, Py_ssize_t size)
|
|||
PyObject *res = NULL;
|
||||
|
||||
CHECK_INITIALIZED(self)
|
||||
CHECK_CLOSED(self, "peek of closed file")
|
||||
|
||||
if (!ENTER_BUFFERED(self))
|
||||
return NULL;
|
||||
|
||||
|
@ -947,6 +949,9 @@ _io__Buffered_read1_impl(buffered *self, Py_ssize_t n)
|
|||
"read length must be positive");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CHECK_CLOSED(self, "read of closed file")
|
||||
|
||||
if (n == 0)
|
||||
return PyBytes_FromStringAndSize(NULL, 0);
|
||||
|
||||
|
|
Loading…
Reference in New Issue