on master help sign in
Use a higher store number to prevent segfaults
3df649aMilán Nagy
jsaddle-warp/src/Language/Javascript/JSaddle/WebSockets.hs+4−4
@@ -61,7 +61,7 @@ import Control.Concurrent.MVar
61 readMVar, newMVar, newEmptyMVar, modifyMVar)
61 readMVar, newMVar, newEmptyMVar, modifyMVar)
62import Network.Wai.Handler.Warp
62import Network.Wai.Handler.Warp
63 (defaultSettings, setTimeout, setPort, runSettings)
63 (defaultSettings, setTimeout, setPort, runSettings)
64−import Foreign.Store (newStore, readStore, lookupStore)
64+import Foreign.Store (newStore, readStore, lookupStore, writeStore, Store(..))
65import Language.Javascript.JSaddle (askJSM)
65import Language.Javascript.JSaddle (askJSM)
66import Control.Monad.IO.Class (MonadIO(..))
66import Control.Monad.IO.Class (MonadIO(..))
67
67
@@ -252,13 +252,13 @@ debugWrapper run = do
252 start' <- takeMVar mvar
252 start' <- takeMVar mvar
253 n <- stop
253 n <- stop
254 start' n >>= restarter mvar
254 start' n >>= restarter mvar
255− lookupStore shutdown_0 >>= \case
255+ lookupStore storeId >>= \case
256 Nothing -> do
256 Nothing -> do
257 restartMVar <- newMVar start
257 restartMVar <- newMVar start
258 void . forkIO $ restarter restartMVar (return 0)
258 void . forkIO $ restarter restartMVar (return 0)
259− void $ newStore restartMVar
259+ void $ writeStore (Store storeId) restartMVar
260 Just shutdownStore -> do
260 Just shutdownStore -> do
261 restartMVar :: MVar (Int -> IO (IO Int)) <- readStore shutdownStore
261 restartMVar :: MVar (Int -> IO (IO Int)) <- readStore shutdownStore
262 void $ tryTakeMVar restartMVar
262 void $ tryTakeMVar restartMVar
263 putMVar restartMVar start
263 putMVar restartMVar start
264− where shutdown_0 = 0
264+ where storeId = 354