aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-01-28 18:49:47 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-01-28 18:49:47 +0000
commiteb1ae3f3d041f9ff0c11b04613a695be11bda706 (patch)
tree51d8bed49ff7aed79902053cf014681d29af8999
parenta98ac4bb428ab5c1ff665aa1def6cc14d02a4e19 (diff)
downloadpuzzles-eb1ae3f3d041f9ff0c11b04613a695be11bda706.zip
puzzles-eb1ae3f3d041f9ff0c11b04613a695be11bda706.tar.gz
puzzles-eb1ae3f3d041f9ff0c11b04613a695be11bda706.tar.bz2
puzzles-eb1ae3f3d041f9ff0c11b04613a695be11bda706.tar.xz
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
-rw-r--r--flood.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/flood.c b/flood.c
index 1b0fa6e..08410ba 100644
--- a/flood.c
+++ b/flood.c
@@ -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);