@@ -407,14 +407,16 @@ notWord8 c = satisfy (/= c) <?> "not " ++ show c
407-- combinators such as 'many', because such parsers loop until a
407-- combinators such as 'many', because such parsers loop until a
408-- failure occurs. Careless use will thus result in an infinite loop.
408-- failure occurs. Careless use will thus result in an infinite loop.
409peekWord8 :: Parser (Maybe Word8)
409peekWord8 :: Parser (Maybe Word8)
410−peekWord8 = T.Parser $ \i0 a0 m0 _kf ks -> case m0 of
410+peekWord8 = T.Parser $ \i0 a0 m0 _kf ks ->
412+ then if m0 == Complete
411− Complete -> ks i0 a0 m0 Nothing
413+ then ks i0 a0 m0 Nothing
412− Incomplete -> let ks' i a m = let w = B.unsafeHead (unI i)
414+ else let ks' i a m = let !w = B.unsafeHead (unI i)
413− in w `seq` ks i a m (Just w)
415+ in ks i a m (Just w)
414− kf' i a m = ks i a m Nothing
416+ kf' i a m = ks i a m Nothing
415− in if B.null (unI i0)
416− then prompt i0 a0 m0 kf' ks'
417+ in prompt i0 a0 m0 kf' ks'
418+ else let !w = B.unsafeHead (unI i0)
417− else ks' i0 a0 m0
419+ in ks i0 a0 m0 (Just w)
418{-# INLINE peekWord8 #-}
420{-# INLINE peekWord8 #-}
420-- | Match only if all input has been consumed.
422-- | Match only if all input has been consumed.