From 41d98828606ed64fc1d5c168de7e5aab5e0afc53 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 11 Aug 2020 07:52:45 +0200 Subject: [PATCH] fairland: Check first two continent sectors properly grow_continents() places the first two continent sectors without checking for collisions or minimum distance. Unlikely to be an issue in practice, as growing such a continent will almost certainly fail. Fix it anyway. Signed-off-by: Markus Armbruster --- src/util/fairland.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/util/fairland.c b/src/util/fairland.c index 644412c5c..3025f86e8 100644 --- a/src/util/fairland.c +++ b/src/util/fairland.c @@ -791,13 +791,17 @@ grow_continents(void) int c, secs; for (c = 0; c < nc; ++c) { - sectx[c][0] = capx[c]; - secty[c][0] = capy[c]; - own[sectx[c][0]][secty[c][0]] = c; - sectx[c][1] = new_x(capx[c] + 2); - secty[c][1] = capy[c]; - own[sectx[c][1]][secty[c][1]] = c; - isecs[c] = 2; + isecs[c] = 0; + if (!try_to_grow(c, capx[c], capy[c], di) + || !try_to_grow(c, new_x(capx[c] + 2), capy[c], di)) { + done = 0; + continue; + } + } + + if (!done) { + qprint("No room for continents\n"); + return 0; } for (secs = 2; secs < sc && done; secs++) { -- 2.43.0