From bbfe4fad361e7190675f28702332ddc377bd8cfd Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 11 Apr 2006 06:47:43 +0000 Subject: Bug #1467952: os.listdir() now correctly raises an error if readdir() fails with an error condition. --- Misc/NEWS | 3 +++ Modules/posixmodule.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/Misc/NEWS b/Misc/NEWS index 7418daa..4dacebd 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 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); -- cgit v0.12