From 0691b46d38fd110b34966b2ba298be1c1a3d59d6 Mon Sep 17 00:00:00 2001
From: Christoph Groth <christoph.groth@cea.fr>
Date: Thu, 16 Feb 2012 12:53:05 +0100
Subject: [PATCH] work around memory leak in scipy.sparse.linalg

---
 kwant/solvers/sparse.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/kwant/solvers/sparse.py b/kwant/solvers/sparse.py
index 559d17c9..c0568011 100644
--- a/kwant/solvers/sparse.py
+++ b/kwant/solvers/sparse.py
@@ -8,6 +8,20 @@ import scipy.sparse as sp
 import scipy.sparse.linalg as spl
 from kwant import physics, system
 
+# This patches a memory leak in scipy:
+# http://projects.scipy.org/scipy/ticket/1597
+#
+# TODO: Remove this code once it is likely that the official bug fix has
+# reached all of our users.
+def del_for_umfpackcontext(self):
+    self.free()
+try:
+    if not hasattr(spl.dsolve.umfpack.UmfpackContext, '__del__'):
+        spl.dsolve.umfpack.UmfpackContext.__del__ = del_for_umfpackcontext
+except:
+    pass
+del del_for_umfpackcontext
+
 def make_linear_sys(sys, out_leads, in_leads, energy=0,
                     force_realspace=False):
     """
-- 
GitLab