From 352dedc26f7dc8e336c83545697566fd4c7e2664 Mon Sep 17 00:00:00 2001 From: krangelov Date: Thu, 12 Aug 2021 14:45:05 +0200 Subject: [PATCH] forgot releasing a stable pointer --- src/runtime/haskell/PGF2.hsc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/runtime/haskell/PGF2.hsc b/src/runtime/haskell/PGF2.hsc index e36ca39b0..b19efbcdb 100644 --- a/src/runtime/haskell/PGF2.hsc +++ b/src/runtime/haskell/PGF2.hsc @@ -287,6 +287,7 @@ readExpr str = if c_expr == castPtrToStablePtr nullPtr then return Nothing else do expr <- deRefStablePtr c_expr + freeStablePtr c_expr return (Just expr) -- | parses a 'String' as a type @@ -295,11 +296,12 @@ readType str = unsafePerformIO $ withText str $ \c_str -> bracket mkUnmarshaller freeUnmarshaller $ \u -> do - c_type <- pgf_read_type c_str u - if c_type == castPtrToStablePtr nullPtr + c_ty <- pgf_read_type c_str u + if c_ty == castPtrToStablePtr nullPtr then return Nothing - else do tp <- deRefStablePtr c_type - return (Just tp) + else do ty <- deRefStablePtr c_ty + freeStablePtr c_ty + return (Just ty) ----------------------------------------------------------------------- -- Exceptions