@@ -759,13 +759,11 @@ takeByTime n (Fold step initial done) = Fold step' initial' done'
759759 Done bres -> return $ Done bres
760760 else do
761761 res <- step s a
762− return
763− $ case res of
764− Partial sres -> Partial $ Tuple3' sres mv t
765− Done bres -> Done bres
762+ case res of
763+ Partial fs -> return $ Partial $ Tuple3' fs mv t
764+ Done b -> liftIO (killThread t) >> return (Done b)
766765
767− done' (Tuple3' s _ t) = liftIO (killThread t) >> done s
768− -- XXX thread should be killed at cleanup
766+ done' (Tuple3' s _ _) = done s
769767
770768 timerThread mv = do
771769 liftIO $ threadDelay (round $ n * 1000000)