From 1368ef43c08d1f474091ac966713d91c16bb4872 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Wed, 29 Jan 2025 11:33:45 +0100
Subject: [PATCH] Fix memory leak in the CHOLMOD wrapper code

When calling CHOLMOD to compute the Cholesky factor of a matrix,
it was not tested whether such a factor already existed. As a
consequence, if the solver was called twice in a row, the old
factor would be lost to a memory leak.

Fix this by explicitly deallocating the old Cholesky factor
before asking CHOLMOD for a new one.

(cherry picked from commit e4ffbb1f1540326817ee080231d6f699efa3c4b5)
---
 dune/istl/cholmod.hh | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dune/istl/cholmod.hh b/dune/istl/cholmod.hh
index 420038fc4..85aa44360 100644
--- a/dune/istl/cholmod.hh
+++ b/dune/istl/cholmod.hh
@@ -461,6 +461,10 @@ public:
 
     });
 
+    // Remove old factor that may be left over from a previous run
+    if (L_)
+      CholmodMethod::free_factor(&L_, &c_);
+
     // Now analyse the pattern and optimal row order
     L_ = CholmodMethod::analyze(M.get(), &c_);
 
-- 
GitLab