Crop the Towers icon more sensibly (i.e. at all).
[sgt/puzzles] / bridges.c
index 694f011..5bb73f4 100644 (file)
--- a/bridges.c
+++ b/bridges.c
@@ -2244,6 +2244,8 @@ static game_state *execute_move(game_state *state, char *move)
             if (sscanf(move, "%d,%d,%d,%d,%d%n",
                        &x1, &y1, &x2, &y2, &nl, &n) != 5)
                 goto badmove;
+            if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2))
+                goto badmove;
             is1 = INDEX(ret, gridi, x1, y1);
             is2 = INDEX(ret, gridi, x2, y2);
             if (!is1 || !is2) goto badmove;
@@ -2253,6 +2255,8 @@ static game_state *execute_move(game_state *state, char *move)
             if (sscanf(move, "%d,%d,%d,%d%n",
                        &x1, &y1, &x2, &y2, &n) != 4)
                 goto badmove;
+            if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2))
+                goto badmove;
             is1 = INDEX(ret, gridi, x1, y1);
             is2 = INDEX(ret, gridi, x2, y2);
             if (!is1 || !is2) goto badmove;
@@ -2261,6 +2265,8 @@ static game_state *execute_move(game_state *state, char *move)
             if (sscanf(move, "%d,%d%n",
                        &x1, &y1, &n) != 2)
                 goto badmove;
+            if (!INGRID(ret, x1, y1))
+                goto badmove;
             is1 = INDEX(ret, gridi, x1, y1);
             if (!is1) goto badmove;
             island_togglemark(is1);
@@ -2473,7 +2479,7 @@ static void dsf_debug_draw(drawing *dr,
 #ifdef DRAW_DSF
     int ts = TILE_SIZE/2;
     int ox = COORD(x) + ts/2, oy = COORD(y) + ts/2;
-    char str[10];
+    char str[32];
 
     sprintf(str, "%d", dsf_canonify(state->solver->dsf, DINDEX(x,y)));
     draw_text(dr, ox, oy, FONT_VARIABLE, ts,
@@ -2550,7 +2556,7 @@ static void island_redraw(drawing *dr,
     int col = (v & G_ISSEL) ? COL_SELECTED : tcol;
     int bg = (v & G_CURSOR) ? COL_CURSOR :
         (v & G_MARK) ? COL_MARK : COL_BACKGROUND;
-    char str[10];
+    char str[32];
 
 #ifdef DRAW_GRID
     draw_rect_outline(dr, COORD(is->x), COORD(is->y),
@@ -2753,7 +2759,7 @@ static void game_print(drawing *dr, game_state *state, int ts)
 
     /* Islands */
     for (i = 0; i < state->n_islands; i++) {
-        char str[10];
+        char str[32];
         struct island *is = &state->islands[i];
         grid = GRID(state, is->x, is->y);
         cx = COORD(is->x) + ts/2;