diff options
| author | Ben Harris <bjh21@bjh21.me.uk> | 2023-01-19 20:26:23 +0000 |
|---|---|---|
| committer | Ben Harris <bjh21@bjh21.me.uk> | 2023-01-19 20:31:05 +0000 |
| commit | 27c97c0ffdda0b91fecf155f3bc29b32ed806bb2 (patch) | |
| tree | 204eaa4d383e3322b69ad9ef6bb27b95e68eb78f | |
| parent | b4aaa11943fb72b09fe173bc97bd9313ff94738c (diff) | |
| download | puzzles-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]
| -rw-r--r-- | guess.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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); |