From d7df2b4c545a3f7b57d8fdabc9d2d4205defdd91 Mon Sep 17 00:00:00 2001
From: Pedro Gonnet <gonnet@google.com>
Date: Mon, 26 Jun 2017 22:10:35 +0200
Subject: [PATCH] fix case when c == c->super.

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

diff --git a/src/cell.c b/src/cell.c
index 0b799138bf..95027b972e 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -1329,12 +1329,16 @@ void cell_activate_drift_part(struct cell *c, struct scheduler *s) {
 
   /* Set the do_sub_drifts all the way up and activate the super drift
      if this has not yet been done. */
-  for (struct cell *parent = c->parent; parent != NULL && !parent->do_sub_drift;
-       parent = parent->parent) {
-    parent->do_sub_drift = 1;
-    if (parent == c->super) {
-      scheduler_activate(s, parent->drift_part);
-      break;
+  if (c == c->super) {
+    scheduler_activate(s, c->drift_part);
+  } else {
+    for (struct cell *parent = c->parent;
+         parent != NULL && !parent->do_sub_drift; parent = parent->parent) {
+      parent->do_sub_drift = 1;
+      if (parent == c->super) {
+        scheduler_activate(s, parent->drift_part);
+        break;
+      }
     }
   }
 }
-- 
GitLab