From 032287cbc4b56312588388c324731005bd3eee77 Mon Sep 17 00:00:00 2001 From: Judah Jacobson Date: Mon, 20 Oct 2008 16:41:09 +0000 Subject: [PATCH] Restore the terminal attributes even if ghci does not exit normally. --- compiler/ghci/InteractiveUI.hs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 () -- 1.7.10.4