on master help sign in
encodeUtf8_1: get my arithmetic right :-(
4f33beaBryan O'Sullivan
Data/Text/Encoding.hs+2−1
@@ -451,7 +451,8 @@ encodeUtf8_1 (Text arr off len)
451 {-# NOINLINE resize #-}
451 {-# NOINLINE resize #-}
452 ensure k n fp ptr go = {-# SCC "encodeUtf8_1/ensure" #-} do
452 ensure k n fp ptr go = {-# SCC "encodeUtf8_1/ensure" #-} do
453 fp' <- resize k fp ptr
453 fp' <- resize k fp ptr
454+ let !m = ptr `minusPtr` unsafeForeignPtrToPtr fp
454− go n fp' (unsafeForeignPtrToPtr fp')
455+ go n fp' (unsafeForeignPtrToPtr fp' `plusPtr` m)
455 do1 ptr n w k = poke8 ptr w >> k (n+1) (ptr `plusPtr` 1)
456 do1 ptr n w k = poke8 ptr w >> k (n+1) (ptr `plusPtr` 1)
456 loop act !n0 fp !ptr0 = hot n0 ptr0
457 loop act !n0 fp !ptr0 = hot n0 ptr0
457 where hot !n !ptr
458 where hot !n !ptr