diff options
| author | Antoine Pitrou <solipsis@pitrou.net> | 2010-07-21 16:47:28 (GMT) |
|---|---|---|
| committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-07-21 16:47:28 (GMT) |
| commit | 7a7013e8304a5e54782330fe91e96e510d63e72e (patch) | |
| tree | 96455204410767ee2046b65699f9738afaa0bcbe | |
| parent | 2f3379f978516aaa3719d56e0ea9d91aca3c6fcc (diff) | |
| download | cpython-7a7013e8304a5e54782330fe91e96e510d63e72e.zip cpython-7a7013e8304a5e54782330fe91e96e510d63e72e.tar.gz cpython-7a7013e8304a5e54782330fe91e96e510d63e72e.tar.bz2 | |
Merged revisions 83030 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r83030 | antoine.pitrou | 2010-07-21 18:41:31 +0200 (mer., 21 juil. 2010) | 5 lines
Issue #5395: check that array.fromfile() re-raises an IOError instead of replacing it
with EOFError.
(this is only an added test, but 2.x will get a fix too)
........
| -rwxr-xr-x | Lib/test/test_array.py | 11 | ||||
| -rw-r--r-- | Misc/ACKS | 1 | ||||
| -rw-r--r-- | Misc/NEWS | 4 | ||||
| -rw-r--r-- | Modules/arraymodule.c | 10 |
4 files changed, 24 insertions, 2 deletions
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 6a573e1..a4aeccf 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -188,6 +188,17 @@ class BaseTest(unittest.TestCase): f.close() test_support.unlink(test_support.TESTFN) + def test_fromfile_ioerror(self): + # Issue #5395: Check if fromfile raises a proper IOError + # instead of EOFError. + a = array.array(self.typecode) + f = open(test_support.TESTFN, 'wb') + try: + self.assertRaises(IOError, a.fromfile, f, len(self.example)) + finally: + f.close() + test_support.unlink(test_support.TESTFN) + def test_filewrite(self): a = array.array(self.typecode, 2*self.example) f = open(test_support.TESTFN, 'wb') @@ -355,6 +355,7 @@ Michiel de Hoon Brian Hooper Randall Hopper Nadav Horesh +Jan Hosang Ken Howard Brad Howes Chih-Hao Huang @@ -18,6 +18,10 @@ Core and Builtins Library ------- +- Issue #5395: array.fromfile() would raise a spurious EOFError when an + I/O error occurred. Now an IOError is raised instead. Patch by chuck + (Jan Hosang). + - Issue 1712522: urllib.quote supports Unicode String with encoding and errors parameter. The encoding parameter defaults to utf-8 and errors to strict. Patch by Matt Giuca. diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 403f646..5b37896 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1228,8 +1228,14 @@ array_fromfile(arrayobject *self, PyObject *args) PyMem_RESIZE(item, char, Py_SIZE(self)*itemsize); self->ob_item = item; self->allocated = Py_SIZE(self); - PyErr_SetString(PyExc_EOFError, - "not enough items in file"); + if (ferror(fp)) { + PyErr_SetFromErrno(PyExc_IOError); + clearerr(fp); + } + else { + PyErr_SetString(PyExc_EOFError, + "not enough items in file"); + } return NULL; } } |
