diff options
-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 bc966817a7..39765b2b91 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); |