Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError if

the file is closed.
This commit is contained in:
Victor Stinner 2011-05-25 22:09:03 +02:00
parent 46f8264b8e
commit b79f28ccbd
3 changed files with 7 additions and 0 deletions

View file

@ -2467,6 +2467,8 @@ class MiscIOTest(unittest.TestCase):
self.assertRaises(ValueError, f.read) self.assertRaises(ValueError, f.read)
if hasattr(f, "read1"): if hasattr(f, "read1"):
self.assertRaises(ValueError, f.read1, 1024) self.assertRaises(ValueError, f.read1, 1024)
if hasattr(f, "readall"):
self.assertRaises(ValueError, f.readall)
if hasattr(f, "readinto"): if hasattr(f, "readinto"):
self.assertRaises(ValueError, f.readinto, bytearray(1024)) self.assertRaises(ValueError, f.readinto, bytearray(1024))
self.assertRaises(ValueError, f.readline) self.assertRaises(ValueError, f.readline)

View file

@ -75,6 +75,9 @@ Core and Builtins
Library Library
------- -------
- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError
if the file is closed.
- Issue #12100: Don't reset incremental encoders of CJK codecs at each call to - Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
their encode() method anymore, but continue to call the reset() method if the their encode() method anymore, but continue to call the reset() method if the
final argument is True. final argument is True.

View file

@ -536,6 +536,8 @@ fileio_readall(fileio *self)
Py_ssize_t total = 0; Py_ssize_t total = 0;
int n; int n;
if (self->fd < 0)
return err_closed();
if (!_PyVerify_fd(self->fd)) if (!_PyVerify_fd(self->fd))
return PyErr_SetFromErrno(PyExc_IOError); return PyErr_SetFromErrno(PyExc_IOError);