X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FDirectory.lhs;h=84effa4db6725634a2cc28d31dfaddc974358037;hb=239e9471e104fd88ec93bf42623c3a68a496657a;hp=00234a3a4b2c7ce36d3a50f29288f5553bcb0f56;hpb=0479b0cfbb0d8b526693dc6906ca19a585eb264f;p=ghc-hetmet.git diff --git a/ghc/lib/std/Directory.lhs b/ghc/lib/std/Directory.lhs index 00234a3..84effa4 100644 --- a/ghc/lib/std/Directory.lhs +++ b/ghc/lib/std/Directory.lhs @@ -346,10 +346,13 @@ getDirectoryContents path = do if (r == 0) then do dEnt <- peek ptr_dEnt - entry <- (d_name dEnt >>= peekCString) - freeDirEnt dEnt - entries <- loop ptr_dEnt dir - return (entry:entries) + if (dEnt == nullPtr) + then return [] + else do + entry <- (d_name dEnt >>= peekCString) + freeDirEnt dEnt + entries <- loop ptr_dEnt dir + return (entry:entries) else do errno <- getErrno if (errno == eINTR) then loop ptr_dEnt dir else do throwErrnoIfMinus1_ "getDirectoryContents" $ closedir dir