Memory leak fixes from James H.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 13 Aug 2005 21:35:41 +0000 (21:35 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 13 Aug 2005 21:35:41 +0000 (21:35 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/puzzles@6188 cda61777-01e9-0310-a592-d414129be87e

map.c

diff --git a/map.c b/map.c
index 5a9bf5e..9b6698a 100644 (file)
--- a/map.c
+++ b/map.c
@@ -969,7 +969,7 @@ static int map_solver(struct solver_scratch *sc,
 static char *new_game_desc(game_params *params, random_state *rs,
                           char **aux, int interactive)
 {
-    struct solver_scratch *sc;
+    struct solver_scratch *sc = NULL;
     int *map, *graph, ngraph, *colouring, *colouring2, *regions;
     int i, j, w, h, n, solveret, cfreq[FOUR];
     int wh;
@@ -1103,6 +1103,7 @@ static char *new_game_desc(game_params *params, random_state *rs,
 
         shuffle(regions, n, sizeof(*regions), rs);
 
+        if (sc) free_scratch(sc);
         sc = new_scratch(graph, n, ngraph);
 
         for (i = 0; i < n; i++) {
@@ -1703,7 +1704,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
         if (state->colouring[r] == c)
             return "";                 /* don't _need_ to change this region */
 
-       sprintf(buf, "%c:%d", (c < 0 ? 'C' : '0' + c), r);
+       sprintf(buf, "%c:%d", (int)(c < 0 ? 'C' : '0' + c), r);
        return dupstr(buf);
     }
 
@@ -1841,6 +1842,7 @@ static game_drawstate *game_new_drawstate(game_state *state)
 
 static void game_free_drawstate(game_drawstate *ds)
 {
+    sfree(ds->drawn);
     if (ds->bl)
         blitter_free(ds->bl);
     sfree(ds);