@@ -118,6 +118,8 @@ where
119import Control.Monad.IO.Class (MonadIO(..))
119import Control.Monad.IO.Class (MonadIO(..))
120import Data.Word (Word8)
120import Data.Word (Word8)
121+import Foreign.ForeignPtr (withForeignPtr)
122+-- import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
121import Foreign.Ptr (plusPtr, castPtr)
123import Foreign.Ptr (plusPtr, castPtr)
122import Foreign.Storable (Storable(..))
124import Foreign.Storable (Storable(..))
123import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
125import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
@@ -128,7 +130,6 @@ import Prelude hiding (read)
128import qualified GHC.IO.FD as FD
130import qualified GHC.IO.FD as FD
129import qualified GHC.IO.Device as RawIO
131import qualified GHC.IO.Device as RawIO
131−import Streamly.Internal.BaseCompat
132import Streamly.Internal.Data.Array.Foreign.Type (Array(..), byteLength, defaultChunkSize, unsafeFreeze)
133import Streamly.Internal.Data.Array.Foreign.Type (Array(..), byteLength, defaultChunkSize, unsafeFreeze)
133import Streamly.Internal.Data.Array.Foreign.Mut.Type (mutableArray)
134import Streamly.Internal.Data.Array.Foreign.Mut.Type (mutableArray)
@@ -214,7 +215,7 @@ readArrayUpto :: Int -> Handle -> IO (Array Word8)
214readArrayUpto size (Handle fd) = do
215readArrayUpto size (Handle fd) = do
215 ptr <- mallocPlainForeignPtrBytes size
216 ptr <- mallocPlainForeignPtrBytes size
216 -- ptr <- mallocPlainForeignPtrAlignedBytes size (alignment (undefined :: Word8))
217 -- ptr <- mallocPlainForeignPtrAlignedBytes size (alignment (undefined :: Word8))
217− unsafeWithForeignPtr ptr $ \p -> do
218+ withForeignPtr ptr $ \p -> do
218 -- n <- hGetBufSome h p size
219 -- n <- hGetBufSome h p size
219#if MIN_VERSION_base(4,15,0)
220#if MIN_VERSION_base(4,15,0)
220 n <- RawIO.read fd p 0 size
221 n <- RawIO.read fd p 0 size
@@ -236,7 +237,7 @@ readArrayUpto size (Handle fd) = do
236{-# INLINABLE writeArray #-}
237{-# INLINABLE writeArray #-}
237writeArray :: Storable a => Handle -> Array a -> IO ()
238writeArray :: Storable a => Handle -> Array a -> IO ()
238writeArray _ arr | A.length arr == 0 = return ()
239writeArray _ arr | A.length arr == 0 = return ()
239−writeArray (Handle fd) arr = unsafeWithForeignPtr (aStart arr) $ \p ->
240+writeArray (Handle fd) arr = withForeignPtr (aStart arr) $ \p ->
240 -- RawIO.writeAll fd (castPtr p) aLen
241 -- RawIO.writeAll fd (castPtr p) aLen
241#if MIN_VERSION_base(4,15,0)
242#if MIN_VERSION_base(4,15,0)
242 RawIO.write fd (castPtr p) 0 aLen
243 RawIO.write fd (castPtr p) 0 aLen
@@ -261,7 +262,7 @@ writeArray (Handle fd) arr = unsafeWithForeignPtr (aStart arr) $ \p ->
261writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
262writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
262writeIOVec _ iov | A.length iov == 0 = return ()
263writeIOVec _ iov | A.length iov == 0 = return ()
263writeIOVec (Handle fd) iov =
264writeIOVec (Handle fd) iov =
264− unsafeWithForeignPtr (aStart iov) $ \p ->
265+ withForeignPtr (aStart iov) $ \p ->
265 RawIO.writevAll fd p (A.length iov)
266 RawIO.writevAll fd p (A.length iov)