Stop the analysis pass in Loopy's redraw routine from being
[sgt/puzzles] / map.c
diff --git a/map.c b/map.c
index e3ded28..af7c0af 100644 (file)
--- a/map.c
+++ b/map.c
@@ -1373,6 +1373,7 @@ static int map_solver(struct solver_scratch *sc,
              */
         }
 
+        sfree(origcolouring);
         sfree(subcolouring);
         free_scratch(rsc);
 
@@ -1788,9 +1789,9 @@ static char *validate_desc(game_params *params, char *desc)
 
     map = snewn(2*wh, int);
     ret = parse_edge_list(params, &desc, map);
+    sfree(map);
     if (ret)
        return ret;
-    sfree(map);
 
     if (*desc != ',')
        return "Expected comma before clue list";
@@ -2341,7 +2342,7 @@ struct game_drawstate {
                            ((button) == CURSOR_UP)    ? -1 : 0)
 
 
-static int region_from_coords(game_state *state, game_drawstate *ds,
+static int region_from_coords(game_state *state, const game_drawstate *ds,
                               int x, int y)
 {
     int w = state->p.w, h = state->p.h, wh = w*h /*, n = state->p.n */;
@@ -2360,7 +2361,7 @@ static int region_from_coords(game_state *state, game_drawstate *ds,
     return state->map->map[quadrant * wh + ty*w+tx];
 }
 
-static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
+static char *interpret_move(game_state *state, game_ui *ui, const game_drawstate *ds,
                            int x, int y, int button)
 {
     char *bufp, buf[256];
@@ -3024,6 +3025,11 @@ static float game_flash_length(game_state *oldstate, game_state *newstate,
        return 0.0F;
 }
 
+static int game_status(game_state *state)
+{
+    return state->completed ? +1 : 0;
+}
+
 static int game_timing_state(game_state *state, game_ui *ui)
 {
     return TRUE;
@@ -3217,6 +3223,7 @@ const struct game thegame = {
     game_redraw,
     game_anim_length,
     game_flash_length,
+    game_status,
     TRUE, TRUE, game_print_size, game_print,
     FALSE,                            /* wants_statusbar */
     FALSE, game_timing_state,