From 977dfd83e7c11518c27d1d1c7aef34f569c8a05e Mon Sep 17 00:00:00 2001
From: Pedro Gonnet <gonnet@google.com>
Date: Tue, 27 Jun 2017 23:03:13 +0200
Subject: [PATCH] don't just activate the drift task, also set the do_drift and
 do_sub_drift flags correctly.

---
 src/cell.c | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/cell.c b/src/cell.c
index 264b58b1d7..924d081480 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1352,27 +1352,30 @@ void cell_activate_drift_part(struct cell *c, struct scheduler *s) {
 }
 
 /**
- * @brief Activate the sorts on a given cell, if needed.
+ * @brief Activate the sorts up a cell hierarchy.
  */
-void cell_activate_sorts(struct cell *c, int sid, struct scheduler *s) {
 
-  void cell_activate_sorts_up(struct cell * c, struct scheduler * s) {
-    if (c == c->super) {
-      scheduler_activate(s, c->sorts);
-      if (c->nodeID == engine_rank) scheduler_activate(s, c->drift_part);
-    } else {
-      for (struct cell *parent = c->parent;
-           parent != NULL && !parent->do_sub_sort; parent = parent->parent) {
-        parent->do_sub_sort = 1;
-        if (parent == c->super) {
-          scheduler_activate(s, parent->sorts);
-          if (parent->nodeID == engine_rank)
-            scheduler_activate(s, parent->drift_part);
-          break;
-        }
+void cell_activate_sorts_up(struct cell *c, struct scheduler *s) {
+  if (c == c->super) {
+    scheduler_activate(s, c->sorts);
+    if (c->nodeID == engine_rank) cell_activate_drift_part(c, s);
+  } else {
+    for (struct cell *parent = c->parent;
+         parent != NULL && !parent->do_sub_sort; parent = parent->parent) {
+      parent->do_sub_sort = 1;
+      if (parent == c->super) {
+        scheduler_activate(s, parent->sorts);
+        if (parent->nodeID == engine_rank) cell_activate_drift_part(parent, s);
+        break;
       }
     }
   }
+}
+
+/**
+ * @brief Activate the sorts on a given cell, if needed.
+ */
+void cell_activate_sorts(struct cell *c, int sid, struct scheduler *s) {
 
   /* Do we need to re-sort? */
   if (c->dx_max_sort > space_maxreldx * c->dmin) {
-- 
GitLab