From ac61ca52e564ff11ef7e7e71e9f19e2bd8d0b774 Mon Sep 17 00:00:00 2001
From: Pedro Gonnet <gonnet@google.com>
Date: Tue, 16 Apr 2019 22:38:12 +0200
Subject: [PATCH] oops -- be careful of linking NULL tasks.

---
 src/engine.c           |  6 ++++++
 src/engine_maketasks.c | 12 ++++++++----
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/engine.c b/src/engine.c
index 1f01c3b7fd..dac6fed8b3 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -149,6 +149,12 @@ struct end_of_step_data {
  */
 void engine_addlink(struct engine *e, struct link **l, struct task *t) {
 
+#ifdef SWIFT_DEBUG_CHECKS
+  if (t == NULL) {
+    error("Trying to link NULL task.");
+  }
+#endif
+
   /* Get the next free link. */
   const size_t ind = atomic_inc(&e->nr_links);
   if (ind >= e->size_links) {
diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index 2442a10288..09920a4957 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -328,10 +328,14 @@ void engine_addtasks_recv_hydro(struct engine *e, struct cell *c,
                              c->mpi.tag, 0, c, NULL);
   }
 
-  engine_addlink(e, &c->mpi.recv, t_xv);
-  engine_addlink(e, &c->mpi.recv, t_rho);
-  engine_addlink(e, &c->mpi.recv, t_gradient);
-  engine_addlink(e, &c->mpi.recv, t_ti);
+  if (t_xv != NULL) {
+    engine_addlink(e, &c->mpi.recv, t_xv);
+    engine_addlink(e, &c->mpi.recv, t_rho);
+#ifdef EXTRA_HYDRO_LOOP
+    engine_addlink(e, &c->mpi.recv, t_gradient);
+#endif
+    engine_addlink(e, &c->mpi.recv, t_ti);
+  }
 
   /* Add dependencies. */
   if (c->hydro.sorts != NULL) {
-- 
GitLab