OS X frontend was directly calling the backend's wants_statusbar()
[sgt/puzzles] / solo.c
diff --git a/solo.c b/solo.c
index efd795b..2079da9 100644 (file)
--- 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.