X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/e1a449049f516296fe30b2286cd4a55a12cadbb2..b5ba72bc4698800049947cdf7696cb44f11096bb:/bridges.c diff --git a/bridges.c b/bridges.c index 694f011..5bb73f4 100644 --- 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;