From db71fa497c3e799259071e572a57081a6ff8fb8e Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 10 Aug 2020 15:39:45 +0200 Subject: [PATCH] fairland: Fix checking of distance arguments main() rejects the distance between continents when it exceeds WORLD_X / 2 and WORLD_Y / 2, and the distance between continents and islands when it exceeds WORLD_Y and WORLD_Y. Nuts. Has always been that way. Reject either when it exceeds the maximum distance between sectors. Signed-off-by: Markus Armbruster --- src/util/fairland.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/util/fairland.c b/src/util/fairland.c index 9dca8aa2c..4cea6e574 100644 --- a/src/util/fairland.c +++ b/src/util/fairland.c @@ -382,6 +382,8 @@ usage(void) static void parse_args(int argc, char *argv[]) { + int dist_max = mapdist(0, 0, WORLD_X / 2, WORLD_Y / 2); + if (argc < 2) { help("missing arguments"); exit(1); @@ -448,7 +450,7 @@ parse_args(int argc, char *argv[]) program_name); exit(1); } - if (di > WORLD_X / 2 || di > WORLD_Y / 2) { + if (di > dist_max) { fprintf(stderr, "%s: distance between continents too large\n", program_name); exit(1); @@ -462,7 +464,7 @@ parse_args(int argc, char *argv[]) program_name); exit(1); } - if (id > WORLD_X || id > WORLD_Y) { + if (id > dist_max) { fprintf(stderr, "%s: distance from islands to continents too large\n", program_name); -- 2.43.0