(Merge 3.1) 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:11:55 +02:00
commit 4767114e77
3 changed files with 7 additions and 0 deletions

View File

@ -2505,6 +2505,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

@ -731,6 +731,9 @@ Core and Builtins
Library Library
------- -------
- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError
if the file is closed.
- Issue #10916: mmap should not segfault when a file is mapped using 0 as length - Issue #10916: mmap should not segfault when a file is mapped using 0 as length
and a non-zero offset, and an attempt to read past the end of file is made and a non-zero offset, and an attempt to read past the end of file is made
(IndexError is raised instead). Patch by Ross Lagerwall. (IndexError is raised instead). Patch by Ross Lagerwall.

View File

@ -583,6 +583,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);