From: Judah Jacobson Date: Mon, 20 Oct 2008 16:41:09 +0000 (+0000) Subject: Restore the terminal attributes even if ghci does not exit normally. X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=032287cbc4b56312588388c324731005bd3eee77;p=ghc-hetmet.git Restore the terminal attributes even if ghci does not exit normally. --- diff --git a/compiler/ghci/InteractiveUI.hs b/compiler/ghci/InteractiveUI.hs index e385f6b..268f05e 100644 --- a/compiler/ghci/InteractiveUI.hs +++ b/compiler/ghci/InteractiveUI.hs @@ -393,10 +393,9 @@ withTerminalReset f = do isTTY <- liftIO $ hIsTerminalDevice stdout if not isTTY then f - else do - oldAttrs <- liftIO $ getTerminalAttributes stdOutput - f - liftIO $ setTerminalAttributes stdOutput oldAttrs Immediately + else gbracket (liftIO $ getTerminalAttributes stdOutput) + (\attrs -> liftIO $ setTerminalAttributes stdOutput attrs Immediately) + (const f) #endif runGHCi :: [(FilePath, Maybe Phase)] -> Maybe [String] -> GHCi ()