instance Storable e => MArray StorableArray e IO where
newArray (l,u) init = do
- a <- mallocArray size
- sequence_ [pokeElemOff a i init | i <- [0..size-1]]
- fp <- newForeignPtr a (free a)
+ fp <- mallocForeignPtrArray size
+ withForeignPtr fp $ \a ->
+ sequence_ [pokeElemOff a i init | i <- [0..size-1]]
return (StorableArray l u fp)
where
size = rangeSize (l,u)
newArray_ (l,u) = do
- a <- mallocArray (rangeSize (l,u))
- fp <- newForeignPtr a (free a)
+ fp <- mallocForeignPtrArray (rangeSize (l,u))
return (StorableArray l u fp)
unsafeRead (StorableArray _ _ fp) i =