@@ -182,12 +182,21 @@ forkProcess node proc = modifyMVar (localState node) $ \st -> do
183 return (tid', lproc)
183 return (tid', lproc)
185− -- TODO: if the counter overflows we should pick a new unique
185+ if lpidCounter lpid == maxBound
187+ newUnique <- randomIO
188+ return ( (localProcessWithId lpid ^= Just lproc)
189+ . (localPidCounter ^= 0)
190+ . (localPidUnique ^= newUnique)
186− return ( (localProcessWithId lpid ^= Just lproc)
195+ return ( (localProcessWithId lpid ^= Just lproc)
187− . (localPidCounter ^: (+ 1))
196+ . (localPidCounter ^: (+ 1))
192handleIncomingMessages :: LocalNode -> IO ()
201handleIncomingMessages :: LocalNode -> IO ()
193handleIncomingMessages node = go [] Map.empty Map.empty Set.empty
202handleIncomingMessages node = go [] Map.empty Map.empty Set.empty