From 226c84a6e5464ca74468e690250227f70e8fa1c8 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sat, 28 Apr 2018 17:03:04 -0700 Subject: Factor out common resource create/initialize/set-finalizer cycle --- src/Internal/HMAC.chs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src/Internal/HMAC.chs') diff --git a/src/Internal/HMAC.chs b/src/Internal/HMAC.chs index 7e64edf..88ac1fb 100644 --- a/src/Internal/HMAC.chs +++ b/src/Internal/HMAC.chs @@ -26,6 +26,7 @@ import Foreign import Foreign.C.Types import Foreign.Ptr.Cast (asVoidPtr) +import Foreign.Ptr.CreateWithFinalizer (createWithFinalizer) {#import Internal.Base#} import Result @@ -33,11 +34,7 @@ import Result -- | Memory-safe allocator for 'HMACCtx'. mallocHMACCtx :: IO (ForeignPtr HMACCtx) -mallocHMACCtx = do - fp <- mallocForeignPtr - withForeignPtr fp {#call HMAC_CTX_init as ^#} - addForeignPtrFinalizer hmacCtxCleanup fp - return fp +mallocHMACCtx = createWithFinalizer {#call HMAC_CTX_init as ^#} hmacCtxCleanup foreign import ccall "&HMAC_CTX_cleanup" hmacCtxCleanup :: FinalizerPtr HMACCtx -- cgit v1.2.3