We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 3c64bb0 commit ebb98f3Copy full SHA for ebb98f3
Data/Text.hs
@@ -1107,15 +1107,15 @@ replicate n t@(Text a o l)
1107
| isSingleton t = replicateChar n (unsafeHead t)
1108
| otherwise = Text (A.run x) 0 len
1109
where
1110
- len = l `mul` n
+ len = l `mul` n -- TODO: detect overflows
1111
x :: ST s (A.MArray s)
1112
x = do
1113
arr <- A.new len
1114
A.copyI arr 0 a o l
1115
- let loop !l =
1116
- let l2 = l `shiftL` 1 in
1117
- if l2 > len then A.copyM arr l arr 0 (len - l) >> return arr
1118
- else A.copyM arr l arr 0 l >> loop l2
+ let loop !l1 =
+ let rest = len - l1 in
+ if rest <= l1 then A.copyM arr l1 arr 0 rest >> return arr
+ else A.copyM arr l1 arr 0 l1 >> loop (l1 `shiftL` 1)
1119
loop l
1120
{-# INLINE [1] replicate #-}
1121
0 commit comments