diff --git a/src/engine.c b/src/engine.c
index 1f01c3b7fd5cb1adb94a5149feb4fc6ac28aa8f1..dac6fed8b3e08188846399a11bb78b3396ec73d6 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 2442a102883cc9970a1e9b560d5181c697d61135..09920a49572ce5c47ca071c0cfd7ef094d0ad612 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) {