Patch #707167: Pass dircache exceptions to the caller. Fixes #682813.
Not backported because of behaviour change.
diff --git a/Doc/whatsnew/whatsnew24.tex b/Doc/whatsnew/whatsnew24.tex
index 2f0df30..5fda620 100644
--- a/Doc/whatsnew/whatsnew24.tex
+++ b/Doc/whatsnew/whatsnew24.tex
@@ -124,7 +124,8 @@
 
 \begin{itemize}
 
-\item Everything is all in the details!
+\item dircache.listdir now passes exceptions to the caller, 
+instead of returning empty lists.
 
 \end{itemize}
 
diff --git a/Lib/dircache.py b/Lib/dircache.py
index e18c7c3..78ec7fe 100644
--- a/Lib/dircache.py
+++ b/Lib/dircache.py
@@ -22,15 +22,9 @@
         del cache[path]
     except KeyError:
         cached_mtime, list = -1, []
-    try:
-        mtime = os.stat(path).st_mtime
-    except os.error:
-        return []
+    mtime = os.stat(path).st_mtime
     if mtime != cached_mtime:
-        try:
-            list = os.listdir(path)
-        except os.error:
-            return []
+        list = os.listdir(path)
         list.sort()
     cache[path] = mtime, list
     return list
diff --git a/Lib/test/test_dircache.py b/Lib/test/test_dircache.py
index 2ec89a2..52014e2 100644
--- a/Lib/test/test_dircache.py
+++ b/Lib/test/test_dircache.py
@@ -56,7 +56,7 @@
             self.assert_(dircache.listdir(self.tempdir) is entries)
 
         ## UNSUCCESSFUL CASES
-        self.assertEquals(dircache.listdir(self.tempdir+"_nonexistent"), [])
+        self.assertRaises(OSError, dircache.listdir, self.tempdir+"_nonexistent")
 
     def test_annotate(self):
         self.writeTemp("test2")
diff --git a/Misc/NEWS b/Misc/NEWS
index 7ffe521..2f0aec8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -40,6 +40,9 @@
 Library
 -------
 
+- dircache now passes exceptions to the caller, instead of returning
+  empty lists.
+
 - The bsddb module and dbhash module now support the iterator and
   mapping protocols which make them more substitutable for dictionaries
   and shelves.