From ae84635da35f4db42f506c556f0cf3a3593d860e Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Tue, 25 Feb 2020 11:52:15 +0800
Subject: [PATCH] Free the proxy memory when done exchanging strays

---
 src/engine.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/engine.c b/src/engine.c
index 88ce085f71..590fa3928a 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -900,6 +900,21 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
         MPI_SUCCESS)
       error("MPI_Waitall on sends failed.");
 
+  /* Free the proxy memory */
+  for (int k = 0; k < e->nr_proxies; k++) {
+    struct proxy *prox = &e->proxies[k];
+    if (prox->gparts_out) {
+      swift_free("gparts_out", prox->gparts_out);
+      prox->gparts_out = NULL;
+      prox->size_gparts_out = 0;
+    }
+    if (prox->gparts_in) {
+      swift_free("gparts_in", prox->gparts_in);
+      prox->gparts_in = NULL;
+      prox->size_gparts_in = 0;
+    }
+  }
+
   if (e->verbose)
     message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
             clocks_getunit());
-- 
GitLab