static void free_scratch(struct solver_scratch *sc)
{
+ sfree(sc->reachable_from);
+ sfree(sc->reachable_to);
+ sfree(sc->positions);
sfree(sc);
}
d2 = n;
}
i2 = (y2*w+x2)*DIRECTIONS+d2;
- if (!reachable[i2]) {
+ if (x2 >= 0 && x2 < w &&
+ y2 >= 0 && y2 < h &&
+ !reachable[i2]) {
int ok;
#ifdef SOLVER_DIAGNOSTICS
printf(" trying point %d,%d,%d", x2, y2, d2);
static void game_free_drawstate(drawing *dr, game_drawstate *ds)
{
+ if (ds->player_background)
+ blitter_free(dr, ds->player_background);
sfree(ds->grid);
sfree(ds);
}