From c2ae35cfb2bcf799e47192d8cf85240c08447db1 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Thu, 8 May 2014 08:41:58 +0000 Subject: [PATCH] fix memory leak in the Haskell binding --- src/runtime/haskell-bind/PGF2.hsc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc index 2ed1e28b9..bff38ec92 100644 --- a/src/runtime/haskell-bind/PGF2.hsc +++ b/src/runtime/haskell-bind/PGF2.hsc @@ -215,12 +215,18 @@ parse lang cat sent = if ty == gu_type__PgfParseError then do c_tok <- (#peek GuExn, data.data) exn tok <- peekCString c_tok + gu_pool_free parsePl + gu_pool_free exprPl return (Left tok) else if ty == gu_type__PgfExn then do c_msg <- (#peek GuExn, data.data) exn msg <- peekCString c_msg + gu_pool_free parsePl + gu_pool_free exprPl throw (PGFError msg) - else throw (PGFError "Parsing failed") + else do gu_pool_free parsePl + gu_pool_free exprPl + throw (PGFError "Parsing failed") else do parseFPl <- newForeignPtr gu_pool_finalizer parsePl exprFPl <- newForeignPtr gu_pool_finalizer exprPl exprs <- fromPgfExprEnum enum parseFPl (lang,exprFPl)