aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2021-10-21 20:39:09 +0100
committerSimon Tatham <anakin@pobox.com>2021-10-21 20:39:09 +0100
commit49d28f2204dfbb21156d98b0313399c8126b59e0 (patch)
tree021acce1d694c21f6a73d9eed51e706e51f4c594
parent42cbd7688a7f05e0a5d56a603a04293307c1e1b2 (diff)
downloadpuzzles-49d28f2204dfbb21156d98b0313399c8126b59e0.zip
puzzles-49d28f2204dfbb21156d98b0313399c8126b59e0.tar.gz
puzzles-49d28f2204dfbb21156d98b0313399c8126b59e0.tar.bz2
puzzles-49d28f2204dfbb21156d98b0313399c8126b59e0.tar.xz
Tents: fix bias in tent placement.
In the very first stage of game generation, we're supposed to pick 1/5 of the grid squares to put tents in, in a uniformly random manner. It failed to be uniform, because I had the wrong limit in random_upto - but it was too small rather than too large, so it never overran the buffer in a way that something like ASan or valgrind would have caught.
-rw-r--r--tents.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tents.c b/tents.c
index 5eb34b0..8b93653 100644
--- a/tents.c
+++ b/tents.c
@@ -998,7 +998,7 @@ static char *new_game_desc(const game_params *params_in, random_state *rs,
int dy, dx;
bool ok = true;
- which = i + random_upto(rs, j);
+ which = i + random_upto(rs, w*h - i);
tmp = order[which];
order[which] = order[i];
order[i] = tmp;