@@ -100,6 +100,7 @@ where
100100
101101import Control.Exception (assert)
102102import Control.Monad.IO.Class (MonadIO(..))
103+import Data.Function ((&))
103104import Data.Word (Word8)
104105import Foreign.ForeignPtr (withForeignPtr)
105106import Foreign.Ptr (minusPtr, plusPtr)
@@ -220,6 +221,11 @@ _toChunksWithBufferOf size h = go
220221{-# INLINE_NORMAL toChunksWithBufferOf #-}
221222toChunksWithBufferOf :: (IsStream t, MonadIO m) =>
222223 Int -> Handle -> t m (Array Word8)
224+{-
225+toChunksWithBufferOf size h =
226+ S.repeatM (getChunk size h)
227+ & S.takeWhile ((/= 0) . byteLength)
228+-}
223229toChunksWithBufferOf size h = fromStreamD (D.Stream step ())
224230 where
225231 {-# INLINE_LATE step #-}
@@ -238,6 +244,10 @@ toChunksWithBufferOf size h = fromStreamD (D.Stream step ())
238244-- @since 0.7.0
239245{-# INLINE_NORMAL readChunksWithBufferOf #-}
240246readChunksWithBufferOf :: MonadIO m => Unfold m (Int, Handle) (Array Word8)
247+readChunksWithBufferOf =
248+ UF.lmap (uncurry getChunk) UF.repeatM
249+ & UF.takeWhile ((/= 0) . byteLength)
250+{-
241251readChunksWithBufferOf = Unfold step return
242252
243253 where
@@ -249,6 +259,7 @@ readChunksWithBufferOf = Unfold step return
249259 case byteLength arr of
250260 0 -> D.Stop
251261 _ -> D.Yield arr (size, h)
262+-}
252263
253264-- There are two ways to implement this.
254265--