ref: 27c97c0ffdda0b91fecf155f3bc29b32ed806bb2
parent: b4aaa11943fb72b09fe173bc97bd9313ff94738c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Thu Jan 19 15:26:23 EST 2023
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]
--- a/guess.c
+++ b/guess.c
@@ -946,13 +946,13 @@
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);