aboutsummaryrefslogtreecommitdiff
path: root/guess.c
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-01-19 20:26:23 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-01-19 20:31:05 +0000
commit27c97c0ffdda0b91fecf155f3bc29b32ed806bb2 (patch)
tree204eaa4d383e3322b69ad9ef6bb27b95e68eb78f /guess.c
parentb4aaa11943fb72b09fe173bc97bd9313ff94738c (diff)
downloadpuzzles-27c97c0ffdda0b91fecf155f3bc29b32ed806bb2.zip
puzzles-27c97c0ffdda0b91fecf155f3bc29b32ed806bb2.tar.gz
puzzles-27c97c0ffdda0b91fecf155f3bc29b32ed806bb2.tar.bz2
puzzles-27c97c0ffdda0b91fecf155f3bc29b32ed806bb2.tar.xz
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]
Diffstat (limited to 'guess.c')
-rw-r--r--guess.c4
1 files 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);