Fix memory leaks in ns cleanup
[alexxy/gromacs.git] / src / gromacs / mdlib / ns.cpp
index 6ad71ef9f906d3bdf0742e5408739763358cda4f..51fc6cfbcc89fe03a0fe807a0f3981533970d1c1 100644 (file)
@@ -2194,6 +2194,10 @@ void init_ns(FILE *fplog, const t_commrec *cr,
 
 void done_ns(gmx_ns_t *ns, int numEnergyGroups)
 {
+    if (ns->bexcl != nullptr)
+    {
+        sfree(ns->bexcl);
+    }
     sfree(ns->bExcludeAlleg);
     if (ns->ns_buf)
     {
@@ -2203,8 +2207,20 @@ void done_ns(gmx_ns_t *ns, int numEnergyGroups)
         }
         sfree(ns->ns_buf);
     }
+    if (ns->nl_sr != nullptr)
+    {
+        for (int i = 0; i < numEnergyGroups; i++)
+        {
+            if (ns->nl_sr[i] != nullptr)
+            {
+                sfree(ns->nl_sr[i]);
+            }
+        }
+        sfree(ns->nl_sr);
+    }
     sfree(ns->simple_aaj);
     sfree(ns->bHaveVdW);
+    sfree(ns->nsr);
     done_grid(ns->grid);
     sfree(ns);
 }