@@ -68,16 +68,18 @@ import qualified Streamly.Streams.StreamK as K
6868runOne
6969 :: MonadIO m
7070 => State Stream m a -> Stream m a -> Maybe WorkerInfo -> m ()
71−runOne st m winfo = do
72− yieldLimitOk <- liftIO $ decrementYieldLimit sv
73− if yieldLimitOk
74− then do
75− liftIO $ decrementBufferLimit sv
76− foldStreamShared st yieldk single stop m
77− else liftIO $ cleanupSVarFromWorker sv
71+runOne st m0 winfo = go m0
7872
7973 where
8074
75+ go m = do
76+ yieldLimitOk <- liftIO $ decrementYieldLimit sv
77+ if yieldLimitOk
78+ then do
79+ liftIO $ decrementBufferLimit sv
80+ foldStreamShared st yieldk single stop m
81+ else liftIO $ cleanupSVarFromWorker sv
82+
8183 sv = fromJust $ streamVar st
8284 mrun = runInIO $ svarMrun sv
8385
@@ -87,7 +89,7 @@ runOne st m winfo = do
8789 sendStop sv winfo
8890 sendit a = liftIO $ void $ send sv (ChildYield a)
8991 single a = sendit a >> (liftIO $ sendStop sv winfo)
90− yieldk a r = sendit a >> (void $ liftIO $ mrun $ runOne st r winfo)
92+ yieldk a r = sendit a >> (void $ liftIO $ mrun $ go r)
9193
9294{-# NOINLINE forkSVarPar #-}
9395forkSVarPar :: (IsStream t, MonadAsync m)