summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/posixmodule.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 7418daa173..4dacebd081 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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);