From 74f45138aeb6608137344c7d5245ff6e3ec12572 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Mon, 26 Dec 2005 11:26:34 +0000 Subject: [PATCH] I've just noticed a bug in the Inertia solver: if you call it on an already-solved grid (i.e. no gems), it will still attempt to show you a move you can make. Eliminate that special case. [originally from svn r6507] --- inertia.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/inertia.c b/inertia.c index a1ad50a..6531b98 100644 --- a/inertia.c +++ b/inertia.c @@ -734,6 +734,18 @@ static char *solve_game(game_state *state, game_state *currstate, int head, tail, pass, i, j, n, x, y, d, dd; char *err, *soln, *p; + /* + * Before anything else, deal with the special case in which + * all the gems are already collected. + */ + for (i = 0; i < wh; i++) + if (currstate->grid[i] == GEM) + break; + if (i == wh) { + *error = "Game is already solved"; + return NULL; + } + /* * Solving Inertia is a question of first building up the graph * of where you can get to from where, and secondly finding a -- 2.30.2