summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2018-02-07 14:51:38 +0100
committerregnat <rg@regnat.ovh>2018-02-07 15:09:36 +0100
commit594a77198f154de54f5aa3395b22b2536a9ecc4c (patch)
treead683cd8246cfc7e770cfca07aa788795bfdeac8
parent8cb879a4ad83656bc70652957a08113e2b784886 (diff)
GSL.ODE: free the jacobian after use
When calling the function `Numeric.GSL.ODE.odeSolveVWith'` and provide a jacobian, a pointer to this jacobian is registered (at https://github.com/albertoruiz/hmatrix/blob/8cb879a4ad83656bc70652957a08113e2b784886/packages/gsl/src/Numeric/GSL/ODE.hs#L146-L148), but never freed, which causes a memory leak. This commits adds a call to `freeHaskellFunPtr` when needed at the end of the function to fix this.
-rw-r--r--packages/gsl/src/Numeric/GSL/ODE.hs1
1 files changed, 1 insertions, 0 deletions
diff --git a/packages/gsl/src/Numeric/GSL/ODE.hs b/packages/gsl/src/Numeric/GSL/ODE.hs
index c4fab85..987d47e 100644
--- a/packages/gsl/src/Numeric/GSL/ODE.hs
+++ b/packages/gsl/src/Numeric/GSL/ODE.hs
@@ -152,6 +152,7 @@ odeSolveVWith' method mbjac control epsAbs epsRel aX aX' mbsc h f xiv ts =
152 // sc' // xiv' // ts' ) 152 // sc' // xiv' // ts' )
153 "ode" 153 "ode"
154 freeHaskellFunPtr fp 154 freeHaskellFunPtr fp
155 if (jp /= nullFunPtr) then freeHaskellFunPtr jp else pure ()
155 return sol 156 return sol
156 157
157foreign import ccall safe "ode" 158foreign import ccall safe "ode"