fixed accessing invalid array position
authorHolger Schemel <holger.schemel@virtion.de>
Fri, 6 Dec 2024 19:13:19 +0000 (20:13 +0100)
committerHolger Schemel <holger.schemel@virtion.de>
Fri, 6 Dec 2024 15:14:37 +0000 (16:14 +0100)
src/game.c

index bcc86408c3123ce4d604817d20d734ea5eb97d82..ee067b8a8715ef82d2cfc09eb2d8284e651fc153 100644 (file)
@@ -15275,12 +15275,6 @@ static boolean SnapField(struct PlayerInfo *player, int dx, int dy)
 {
   int jx = player->jx, jy = player->jy;
   int x = jx + dx, y = jy + dy;
-  int snap_direction = (dx == -1 ? MV_LEFT  :
-                       dx == +1 ? MV_RIGHT :
-                       dy == -1 ? MV_UP    :
-                       dy == +1 ? MV_DOWN  : MV_NONE);
-  boolean can_continue_snapping = (level.continuous_snapping &&
-                                  WasJustFalling[x][y] < CHECK_DELAY_FALLING);
 
   if (player->MovPos != 0 && game.engine_version >= VERSION_IDENT(2,2,0,0))
     return FALSE;
@@ -15308,6 +15302,13 @@ static boolean SnapField(struct PlayerInfo *player, int dx, int dy)
     return FALSE;
   }
 
+  int snap_direction = (dx == -1 ? MV_LEFT  :
+                       dx == +1 ? MV_RIGHT :
+                       dy == -1 ? MV_UP    :
+                       dy == +1 ? MV_DOWN  : MV_NONE);
+  boolean can_continue_snapping = (level.continuous_snapping &&
+                                  WasJustFalling[x][y] < CHECK_DELAY_FALLING);
+
   // prevent snapping with already pressed snap key when not allowed
   if (player->is_snapping && !can_continue_snapping)
     return FALSE;