From e8b8139ce3d298017a0fa153b31ea10b19e8366c Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <matthieu.schaller@durham.ac.uk>
Date: Sat, 30 Jul 2016 13:00:36 +0100
Subject: [PATCH] Recurse to clean the content of all cells

---
 src/cell.c   | 9 ++++++++-
 src/engine.c | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/cell.c b/src/cell.c
index 7b663b92db..2796a8933e 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -711,4 +711,11 @@ void cell_clean_links(struct cell *c, void *data) {
 /**
  * @brief Frees up the memory allocated for this #cell
  */
-void cell_clean(struct cell *c) { free(c->sort); }
+void cell_clean(struct cell *c) {
+
+  free(c->sort);
+
+  /* Recurse */
+  for (int k = 0; k < 8; k++)
+    if (c->progeny[k]) cell_clean(c->progeny[k]);
+}
diff --git a/src/engine.c b/src/engine.c
index 4d32da00f7..b33850be94 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -3178,8 +3178,8 @@ void engine_init(struct engine *e, struct space *s,
 #if defined(HAVE_SETAFFINITY)
   if (with_aff) {
     free(cpuid);
-    free(buf);
   }
+  free(buf);
 #endif
 
   /* Wait for the runner threads to be in place. */
-- 
GitLab