diff options
author | Georg Brandl <georg@python.org> | 2006-04-11 06:47:43 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-04-11 06:47:43 (GMT) |
commit | bbfe4fad361e7190675f28702332ddc377bd8cfd (patch) | |
tree | 3c957d97c0802ffd8ab2b6f04018f57f893a11a0 | |
parent | ce27a06d37bf512d2e2f142b225c4adad015fe27 (diff) | |
download | cpython-bbfe4fad361e7190675f28702332ddc377bd8cfd.zip cpython-bbfe4fad361e7190675f28702332ddc377bd8cfd.tar.gz cpython-bbfe4fad361e7190675f28702332ddc377bd8cfd.tar.bz2 |
Bug #1467952: os.listdir() now correctly raises an error if readdir()
fails with an error condition.
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/posixmodule.c | 6 |
2 files changed, 9 insertions, 0 deletions
@@ -41,6 +41,9 @@ Core and builtins Extension Modules ----------------- +- Bug #1467952: os.listdir() now correctly raises an error if readdir() + fails with an error condition. + - Fix bsddb.db.DBError derived exceptions so they can be unpickled. Library diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index bc96681..39765b2 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1901,6 +1901,12 @@ posix_listdir(PyObject *self, PyObject *args) } Py_DECREF(v); } + if (errno != 0 && d != NULL) { + /* readdir() returned NULL and set errno */ + closedir(dirp); + Py_DECREF(d); + return posix_error_with_allocated_filename(name); + } closedir(dirp); PyMem_Free(name); |