X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/57046465d3de05a21fb9a6e540ba064f2ed70010..0968d748f157ecce4155b255ff98fa909c325bd9:/filling.c?ds=sidebyside diff --git a/filling.c b/filling.c index fba86e5..b9dff73 100644 --- a/filling.c +++ b/filling.c @@ -47,7 +47,6 @@ #include #include -#include #include #include #include @@ -300,7 +299,7 @@ static game_state *new_game(midend *, game_params *, char *); static void free_game(game_state *); /* generate a random valid board; uses validate_board. */ -void make_board(int *board, int w, int h, random_state *rs) { +static void make_board(int *board, int w, int h, random_state *rs) { int *dsf; const unsigned int sz = w * h; @@ -975,24 +974,24 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds, static game_state *execute_move(game_state *state, char *move) { game_state *new_state; + const int sz = state->shared->params.w * state->shared->params.h; if (*move == 's') { - const int sz = state->shared->params.w * state->shared->params.h; int i = 0; new_state = dup_game(state); for (++move; i < sz; ++i) new_state->board[i] = move[i] - '0'; new_state->cheated = TRUE; } else { char *endptr; - const int i = strtol(move, &endptr, errno = 0); + const int i = strtol(move, &endptr, 0); int value; - if (errno == ERANGE) return NULL; if (endptr == move) return NULL; if (*endptr != '_') return NULL; move = endptr + 1; value = strtol(move, &endptr, 0); if (endptr == move) return NULL; if (*endptr != '\0') return NULL; + if (i < 0 || i >= sz || value < 0 || value > 9) return NULL; new_state = dup_game(state); new_state->board[i] = value; } @@ -1526,7 +1525,7 @@ const struct game thegame = { TRUE, FALSE, game_print_size, game_print, FALSE, /* wants_statusbar */ FALSE, game_timing_state, - 0, /* flags */ + REQUIRE_NUMPAD, /* flags */ }; #ifdef STANDALONE_SOLVER /* solver? hah! */