shithub: MicroHs

Download patch

ref: ddf9aaa31bf2fd3fe08a170e3ed23e53f0b6121a
parent: d9a193c34f815085435b5fbd49c8799f209f69f9
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Tue Jul 23 08:45:10 EDT 2024

Add allocaBytes

--- a/lib/Foreign/Marshal/Alloc.hs
+++ b/lib/Foreign/Marshal/Alloc.hs
@@ -1,7 +1,7 @@
 module Foreign.Marshal.Alloc(
   malloc, calloc, alloca,
   free,
-  mallocBytes, callocBytes,
+  mallocBytes, callocBytes, allocaBytes,
   ) where
 import Prelude()              -- do not import Prelude
 import Primitives
@@ -32,8 +32,11 @@
 calloc = callocBytes (sizeOf (undefined :: a))
 
 alloca :: forall a b . Storable a => (Ptr a -> IO b) -> IO b
-alloca io =
-  mallocBytes (sizeOf (undefined :: a)) `primBind` (\ p ->
+alloca = allocaBytes (sizeOf (undefined :: a))
+
+allocaBytes :: forall a b . Int -> (Ptr a -> IO b) -> IO b
+allocaBytes len io =
+  mallocBytes len `primBind` (\ p ->
   io p `primBind` (\ b ->
   free p `primThen`
   primReturn b))
--