Bug #1467952: os.listdir() now correctly raises an error if readdir()
fails with an error condition.
diff --git a/Misc/NEWS b/Misc/NEWS
index 7418daa..4dacebd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -41,6 +41,9 @@
 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 @@
 		}
 		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);