Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/9b7bd85df24007e693c0c9b1e3303926cc9ad81d

>---------------------------------------------------------------

commit 9b7bd85df24007e693c0c9b1e3303926cc9ad81d
Author: Simon Marlow <[email protected]>
Date:   Wed Apr 11 10:03:45 2012 +0100

    bugfix: use forkIOWithUnmask rather than forkIO

>---------------------------------------------------------------

 System/Timeout.hs |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/System/Timeout.hs b/System/Timeout.hs
index 4114852..a72ec1a 100644
--- a/System/Timeout.hs
+++ b/System/Timeout.hs
@@ -25,12 +25,8 @@
 module System.Timeout ( timeout ) where
 
 #ifdef __GLASGOW_HASKELL__
-import Prelude             (Show(show), IO, Ord((<)), Eq((==)), Int,
-                            otherwise, fmap)
-import Data.Maybe          (Maybe(..))
-import Control.Monad       (Monad(..))
-import Control.Concurrent  (forkIO, threadDelay, myThreadId, killThread)
-import Control.Exception   (Exception, handleJust, throwTo, bracket)
+import Control.Concurrent
+import Control.Exception   (Exception, handleJust, bracket)
 import Data.Typeable
 import Data.Unique         (Unique, newUnique)
 
@@ -86,7 +82,8 @@ timeout n f
         ex  <- fmap Timeout newUnique
         handleJust (\e -> if e == ex then Just () else Nothing)
                    (\_ -> return Nothing)
-                   (bracket (forkIO (threadDelay n >> throwTo pid ex))
+                   (bracket (forkIOWithUnmask $ \unmask ->
+                                 unmask $ threadDelay n >> throwTo pid ex)
                             (killThread)
                             (\_ -> fmap Just f))
 #else



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to