Forbid moves that fill with the current colour in Flood

This avoids an assertion failure, "oldcolour != newcolour" in fill(),
by catching it it execute_move().  As far as I know this couldn't be
triggered from the UI, but it could be demonstrated with this save
file:

SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
VERSION :1:1
GAME    :5:Flood
PARAMS  :1:3
CPARAMS :1:3
DESC    :12:231353400,11
NSTATES :1:3
STATEPOS:1:3
MOVE    :2:M3
MOVE    :2:M3
This commit is contained in:
Ben Harris
2023-01-28 18:49:47 +00:00
parent a98ac4bb42
commit eb1ae3f3d0

View File

@ -887,6 +887,7 @@ static game_state *execute_move(const game_state *state, const char *move)
if (move[0] == 'M' &&
sscanf(move+1, "%d", &c) == 1 &&
c >= 0 &&
c != state->grid[FILLY * state->w + FILLX] &&
!state->complete) {
int *queue = snewn(state->w * state->h, int);
ret = dup_game(state);