Skip to content

Commit 87962a8

Browse files
committed
Fix a bug in unsafeAsForeignPtr
1 parent 29b7648 commit 87962a8

File tree

1 file changed

+6
-4
lines changed
  • core/src/Streamly/Internal/Data/Array

1 file changed

+6
-4
lines changed

core/src/Streamly/Internal/Data/Array/Type.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,12 +287,14 @@ unsafePinnedAsPtr arr f = do
287287
{-# INLINE unsafeAsForeignPtr #-}
288288
unsafeAsForeignPtr
289289
:: MonadIO m => Array a -> (ForeignPtr a -> Int -> m b) -> m b
290-
unsafeAsForeignPtr arr@Array{..} f =
291-
unsafePinnedAsPtr arr finner
290+
unsafeAsForeignPtr arr0 f = do
291+
let marr = unsafeThaw arr0
292+
pinned <- liftIO $ MA.pin marr
293+
MA.unsafeAsPtr pinned (finner (MA.arrContents pinned))
292294
where
293-
finner (Ptr addr#) i =
295+
finner arrContents_ (Ptr addr#) i =
294296
let fptrContents =
295-
PlainPtr (Unboxed.getMutByteArray# arrContents)
297+
PlainPtr (Unboxed.getMutByteArray# arrContents_)
296298
fptr = ForeignPtr addr# fptrContents
297299
in f fptr i
298300

0 commit comments

Comments
 (0)