@@ -29,6 +29,7 @@ import Data.Text.Lazy.Internal
29import qualified Data.Text.Internal as I
29import qualified Data.Text.Internal as I
30import qualified Data.Text.Array as A
30import qualified Data.Text.Array as A
31import Data.Text.UnsafeChar (unsafeWrite)
31import Data.Text.UnsafeChar (unsafeWrite)
32+import Data.Text.UnsafeShift (shiftL)
32import Data.Text.Unsafe (iter)
33import Data.Text.Unsafe (iter)
33import Data.Int (Int64)
34import Data.Int (Int64)
@@ -64,7 +65,7 @@ unstreamChunks chunkSize (Stream next s0 len0)
64 inner marr len s i
65 inner marr len s i
65 | i + 1 >= chunkSize = return (marr, (s,i))
66 | i + 1 >= chunkSize = return (marr, (s,i))
66 | i + 1 >= len = do
67 | i + 1 >= len = do
67− let newLen = min (len * 2) chunkSize
68+ let newLen = min (len `shiftL` 1) chunkSize
68 marr' <- A.unsafeNew newLen
69 marr' <- A.unsafeNew newLen
69 A.copy marr marr'
70 A.copy marr marr'
70 inner marr' newLen s i
71 inner marr' newLen s i