summaryrefslogtreecommitdiff
path: root/src/runtime/haskell-bind
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2014-05-08 08:41:58 +0000
committerkr.angelov <kr.angelov@gmail.com>2014-05-08 08:41:58 +0000
commit58d0cdc94370003ca710de59e527a0a21637f6f1 (patch)
tree7cfc62a3c8f536537e2eb8c152bc1976eedd00c4 /src/runtime/haskell-bind
parentfc6d8f63623c166ed79d2d2e3c4a73cc1de0a9a7 (diff)
fix memory leak in the Haskell binding
Diffstat (limited to 'src/runtime/haskell-bind')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc8
1 files changed, 7 insertions, 1 deletions
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)