X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/59b4cf3c2b6c9c329625bd656a5eda2fa72ed162..910c21c00c9be54ac3517dab20e1e63df8f93eb7:/solo.c diff --git a/solo.c b/solo.c index efd795b..2079da9 100644 --- a/solo.c +++ b/solo.c @@ -2220,7 +2220,7 @@ static char *new_game_desc(game_params *params, random_state *rs, grid2[coords[2*j+1]*cr+coords[2*j]] = 0; ret = solver(c, r, grid2, maxdiff); - if (ret != DIFF_IMPOSSIBLE && ret != DIFF_AMBIGUOUS) { + if (ret <= maxdiff) { for (j = 0; j < ncoords; j++) grid[coords[2*j+1]*cr+coords[2*j]] = 0; } @@ -2293,6 +2293,9 @@ static char *validate_desc(game_params *params, char *desc) } else if (n == '_') { /* do nothing */; } else if (n > '0' && n <= '9') { + int val = atoi(desc-1); + if (val < 1 || val > params->c * params->r) + return "Out-of-range number in game description"; squares++; while (*desc >= '0' && *desc <= '9') desc++; @@ -3009,7 +3012,7 @@ static void game_print(drawing *dr, game_state *state, int tilesize) /* Ick: fake up `ds->tilesize' for macro expansion purposes */ game_drawstate ads, *ds = &ads; - ads.tilesize = tilesize; + game_set_size(dr, ds, NULL, tilesize); /* * Border.