on master help sign in
Data.Text.Lazy.Fusion: fix a bug in unstreamChunks.

--HG-- extra : convert_revision : 48fb0ec6817ce7621b788a65f21e12c4a1075a00

commit701d179b71ce40505c97bfb4b924aa89b42607bf authorNicolas Pouillard <nicolas.pouillard@gmail.com> dateThu 5 Mar 2009, 15:04 (18 years ago) parent7d48537
1 file changed+7−7
Data/Text/Lazy/Fusion.hs+7−7
Data/Text/Lazy/Fusion.hs+7−7
@@ -55,21 +55,21 @@ unstreamChunks chunkSize (Stream next s0 len0)
5555 Yield x s' -> I.Text arr 0 len `chunk` outer s''
5656 where (arr,(s'',len)) = A.run2 fill
5757 fill = do a <- A.unsafeNew unknownLength
58− inner a unknownLength x s' 0
58+ i <- unsafeWrite a 0 x
59+ inner a unknownLength s' i
5960 unknownLength = 4
60− inner marr len x s i
61+ inner marr len s i
6162 | i + 1 >= chunkSize = return (marr, (s,i))
6263 | i + 1 >= len = do
6364 let newLen = min (len * 2) chunkSize
6465 marr' <- A.unsafeNew newLen
6566 A.copy marr marr'
66− inner marr' newLen x s i
67+ inner marr' newLen s i
6768 | otherwise =
6869 case next s of
69− Done -> do i' <- unsafeWrite marr i x
70− return (marr,(s,i'))
71− Skip s' -> inner marr len x s' i
72− Yield x' s' -> unsafeWrite marr i x >>= inner marr len x' s'
70+ Done -> return (marr,(s,i))
71+ Skip s' -> inner marr len s' i
72+ Yield x s' -> unsafeWrite marr i x >>= inner marr len s'
7373{-# INLINE [0] unstreamChunks #-}
7474
7575-- | /O(n)/ Convert a 'Stream Char' into a 'Text', using