diff --git a/src/engine.c b/src/engine.c
index 5bbc7a8e41e15819eadbd8010d0407500a78c62e..1e5f638330fede6ddbbfd4cf2a94fe2a9f03f0c0 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -4615,7 +4615,8 @@ void engine_unskip(struct engine *e) {
         (e->policy &
              (engine_policy_self_gravity | engine_policy_external_gravity) &&
          cell_is_active_gravity(c, e))) {
-      memswap(&local_cells[k], &local_cells[num_active_cells], sizeof(int));
+      if (num_active_cells != k)
+        memswap(&local_cells[k], &local_cells[num_active_cells], sizeof(int));
       num_active_cells += 1;
     }
   }