Fix a space leak in :trace (trac #2128)
authorIan Lynagh <igloo@earth.li>
Sun, 16 Mar 2008 21:17:48 +0000 (21:17 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 16 Mar 2008 21:17:48 +0000 (21:17 +0000)
We were doing lots of cons'ing and tail'ing without forcing the tails,
so were building up lots of thunks.

compiler/main/InteractiveEval.hs

index 7014d28..40eb66a 100644 (file)
@@ -360,7 +360,7 @@ rethrow dflags io = Exception.catch io $ \e -> do -- NB. not catchDyn
 withInterruptsSentTo :: ThreadId -> IO r -> IO r
 withInterruptsSentTo thread get_result = do
   bracket (modifyMVar_ interruptTargetThread (return . (thread:)))
-          (\_ -> modifyMVar_ interruptTargetThread (return.tail))
+          (\_ -> modifyMVar_ interruptTargetThread (\tl -> return $! tail tl))
           (\_ -> get_result)
 
 -- This function sets up the interpreter for catching breakpoints, and