Fix off-by-one error in the IO manager
authorPatrick Palka <patrick@parcs.ath.cx>
Sun, 1 Sep 2013 21:34:31 +0000 (17:34 -0400)
committerPatrick Palka <patrick@parcs.ath.cx>
Mon, 2 Sep 2013 15:52:06 +0000 (11:52 -0400)
The last enabled event manager was being needlessly restarted after
increasing the number of capabilities at runtime.

GHC/Event/Thread.hs

index c4f83a0..61abbd0 100644 (file)
@@ -332,7 +332,7 @@ ioManagerCapabilitiesChanged = do
               -- copy the existing values into the new array:
               forM_ [0..high] $ \i -> do
                 Just (tid,mgr) <- readIOArray eventManagerArray i
-                if i < numEnabled - 1
+                if i < numEnabled
                   then writeIOArray new_eventManagerArray i (Just (tid,mgr))
                   else do tid' <- restartPollLoop mgr i
                           writeIOArray new_eventManagerArray i (Just (tid',mgr))