diff --git a/Data/ByteString/Lazy/UTF8.hs b/Data/ByteString/Lazy/UTF8.hs index 5a513fb0059e5e1ddc7fcfe82e00244ce7f086b8..34b18ac84d9f1ae33d8b982be90dd0169cfc9e6c 100644 --- a/Data/ByteString/Lazy/UTF8.hs +++ b/Data/ByteString/Lazy/UTF8.hs @@ -56,17 +56,17 @@ import Codec.Binary.UTF8.Generic (buncons) -- | Converts a Haskell string into a UTF8 encoded bytestring. fromString :: String -> B.ByteString -fromString [] = B.empty -fromString xs = packChunks 32 xs +fromString [] = B.empty +fromString xs0 = packChunks 32 xs0 where packChunks n xs = case packUptoLenBytes n xs of - (bs, []) -> B.chunk bs B.Empty - (bs, xs) -> B.Chunk bs (packChunks (min (n * 2) B.smallChunkSize) xs) + (bs, [] ) -> B.chunk bs B.Empty + (bs, xs') -> B.Chunk bs (packChunks (min (n * 2) B.smallChunkSize) xs') packUptoLenBytes :: Int -> String -> (S.ByteString, String) packUptoLenBytes len xs = unsafeCreateUptoN' len $ \ptr -> do - (end, xs) <- go ptr (ptr `plusPtr` (len-4)) xs - return (end `minusPtr` ptr, xs) + (end, xs') <- go ptr (ptr `plusPtr` (len-4)) xs + return (end `minusPtr` ptr, xs') -- end is the last position at which you can write a whole 4 byte sequence safely go :: Ptr Word8 -> Ptr Word8 -> String -> IO (Ptr Word8, String)