mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 15:41:30 -07:00
Limit maximum grid size in Loopy
Every grid shape has its own limit, so this involved adding a new interface between loopy.c and grid.c. The limits are based on ensuring that the co-ordinate system of the grid doesn't overflow INT_MAX and neither do the lengths of the face and dot arrays. Though now I come to look at it I think the actual limits of grid.c are much lower. Hmm.
This commit is contained in:
3
loopy.c
3
loopy.c
@ -684,6 +684,7 @@ static game_params *custom_params(const config_item *cfg)
|
||||
|
||||
static const char *validate_params(const game_params *params, bool full)
|
||||
{
|
||||
const char *err;
|
||||
if (params->type < 0 || params->type >= NUM_GRID_TYPES)
|
||||
return "Illegal grid type";
|
||||
if (params->w < grid_size_limits[params->type].amin ||
|
||||
@ -692,6 +693,8 @@ static const char *validate_params(const game_params *params, bool full)
|
||||
if (params->w < grid_size_limits[params->type].omin &&
|
||||
params->h < grid_size_limits[params->type].omin)
|
||||
return grid_size_limits[params->type].oerr;
|
||||
err = grid_validate_params(grid_types[params->type], params->w, params->h);
|
||||
if (err != NULL) return err;
|
||||
|
||||
/*
|
||||
* This shouldn't be able to happen at all, since decode_params
|
||||
|
Reference in New Issue
Block a user