diff --git a/grid.c b/grid.c index d73e521..d7e6442 100644 --- a/grid.c +++ b/grid.c @@ -453,6 +453,14 @@ static void grid_trim_vigorously(grid *g) for (i = newdots = 0; i < g->num_dots; i++) dots[i] = (dots[i] ? newdots++ : -1); + /* + * Free the dynamically allocated 'dots' pointer lists in faces + * we're going to discard. + */ + for (i = 0; i < g->num_faces; i++) + if (faces[i] < 0) + sfree(g->faces[i].dots); + /* * Go through and compact the arrays. */ diff --git a/loopy.c b/loopy.c index 6e97acd..43e96a7 100644 --- a/loopy.c +++ b/loopy.c @@ -917,6 +917,8 @@ static game_drawstate *game_new_drawstate(drawing *dr, game_state *state) static void game_free_drawstate(drawing *dr, game_drawstate *ds) { + sfree(ds->textx); + sfree(ds->texty); sfree(ds->clue_error); sfree(ds->clue_satisfied); sfree(ds->lines);