From: Simon Marlow Date: Wed, 1 Dec 2010 13:08:47 +0000 (+0000) Subject: fix a discarded exception in hClose X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=9b52d1b65de8d855dca00774118f98f4e408f418;hp=af95709acf78729340ee65ec7f54c98980eb465a;p=ghc-base.git fix a discarded exception in hClose --- diff --git a/GHC/IO/Handle.hs b/GHC/IO/Handle.hs index ddf17e7..a2273ee 100644 --- a/GHC/IO/Handle.hs +++ b/GHC/IO/Handle.hs @@ -82,14 +82,11 @@ hClose h@(FileHandle _ m) = do mb_exc <- hClose' h m hClose_maybethrow mb_exc h hClose h@(DuplexHandle _ r w) = do - mb_exc1 <- hClose' h w - mb_exc2 <- hClose' h r - case mb_exc1 of - Nothing -> return () - Just e -> hClose_maybethrow mb_exc2 h + excs <- mapM (hClose' h) [r,w] + hClose_maybethrow (listToMaybe (catMaybes excs)) h hClose_maybethrow :: Maybe SomeException -> Handle -> IO () -hClose_maybethrow Nothing h = return () +hClose_maybethrow Nothing h = return () hClose_maybethrow (Just e) h = hClose_rethrow e h hClose_rethrow :: SomeException -> Handle -> IO ()