@@ -118,6 +118,8 @@ where
118118
119119import Control.Monad.IO.Class (MonadIO(..))
120120import Data.Word (Word8)
121+import Foreign.ForeignPtr (withForeignPtr)
122+-- import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
121123import Foreign.Ptr (plusPtr, castPtr)
122124import Foreign.Storable (Storable(..))
123125import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
@@ -128,7 +130,6 @@ import Prelude hiding (read)
128130import qualified GHC.IO.FD as FD
129131import qualified GHC.IO.Device as RawIO
130132
131−import Streamly.Internal.BaseCompat
132133import Streamly.Internal.Data.Array.Foreign.Type (Array(..), byteLength, defaultChunkSize, unsafeFreeze)
133134import Streamly.Internal.Data.Array.Foreign.Mut.Type (mutableArray)
134135
@@ -214,7 +215,7 @@ readArrayUpto :: Int -> Handle -> IO (Array Word8)
214215readArrayUpto size (Handle fd) = do
215216 ptr <- mallocPlainForeignPtrBytes size
216217 -- ptr <- mallocPlainForeignPtrAlignedBytes size (alignment (undefined :: Word8))
217− unsafeWithForeignPtr ptr $ \p -> do
218+ withForeignPtr ptr $ \p -> do
218219 -- n <- hGetBufSome h p size
219220#if MIN_VERSION_base(4,15,0)
220221 n <- RawIO.read fd p 0 size
@@ -236,7 +237,7 @@ readArrayUpto size (Handle fd) = do
236237{-# INLINABLE writeArray #-}
237238writeArray :: Storable a => Handle -> Array a -> IO ()
238239writeArray _ arr | A.length arr == 0 = return ()
239−writeArray (Handle fd) arr = unsafeWithForeignPtr (aStart arr) $ \p ->
240+writeArray (Handle fd) arr = withForeignPtr (aStart arr) $ \p ->
240241 -- RawIO.writeAll fd (castPtr p) aLen
241242#if MIN_VERSION_base(4,15,0)
242243 RawIO.write fd (castPtr p) 0 aLen
@@ -261,7 +262,7 @@ writeArray (Handle fd) arr = unsafeWithForeignPtr (aStart arr) $ \p ->
261262writeIOVec :: Handle -> Array RawIO.IOVec -> IO ()
262263writeIOVec _ iov | A.length iov == 0 = return ()
263264writeIOVec (Handle fd) iov =
264− unsafeWithForeignPtr (aStart iov) $ \p ->
265+ withForeignPtr (aStart iov) $ \p ->
265266 RawIO.writevAll fd p (A.length iov)
266267#endif
267268