diff --git a/src/cell.c b/src/cell.c index 0b799138bff7081b7d1ab2e3de6a53d19d232379..95027b972ed209c1bc79b4861074739ad8a0f3e1 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; + } } } }