From 27c97c0ffdda0b91fecf155f3bc29b32ed806bb2 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Thu, 19 Jan 2023 20:26:23 +0000 Subject: [PATCH] Allow repeated "solve" operations in Guess Since using the "solve" option doesn't consume a guess, it's safe to allow it to occur multiple times. Without this, selecting "solve" a second time causes an assertion failure because solve() returns a move string that's rejected by execute_move(). Possible solve() could instead refuse to solve an already-solved puzzle, but that seems needlessly pedantic. [fixes c84af670b52f09e9e47587584c0559c508d4a37d] --- guess.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guess.c b/guess.c index 37195b4..dd6462b 100644 --- a/guess.c +++ b/guess.c @@ -946,13 +946,13 @@ static game_state *execute_move(const game_state *from, const char *move) game_state *ret; const char *p; - /* No moves are allowed once the game is solved. */ - if (from->solved) return NULL; if (!strcmp(move, "S")) { ret = dup_game(from); ret->solved = -1; return ret; } else if (move[0] == 'G') { + /* No guesses are allowed once the game is solved. */ + if (from->solved) return NULL; p = move+1; ret = dup_game(from);