aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2023-06-25 15:20:50 +0100
committerSimon Tatham <anakin@pobox.com>2023-06-25 15:40:58 +0100
commitc5076be383d7630d70666a543306c8f6ee65edb9 (patch)
tree1dd4c8e16c297be532d7bfee18a6ee9c46bf9239
parentc224416c76e41f284b318adc51f08c3ed11de8e2 (diff)
downloadpuzzles-c5076be383d7630d70666a543306c8f6ee65edb9.zip
puzzles-c5076be383d7630d70666a543306c8f6ee65edb9.tar.gz
puzzles-c5076be383d7630d70666a543306c8f6ee65edb9.tar.bz2
puzzles-c5076be383d7630d70666a543306c8f6ee65edb9.tar.xz
Keen: fix another misuse of dsf_canonify.
Chris Boyle points out that outline_block_structure has a comment saying that we're supposed to have picked a square with a boundary to its left. dsf_canonify no longer guarantees that, but dsf_minimal does. Switch to using that throughout the function. 'keen --generate 10#12345 --print 5x2' failed an assertion before this fix, and now doesn't.
-rw-r--r--keen.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/keen.c b/keen.c
index b8c73fb..1446740 100644
--- a/keen.c
+++ b/keen.c
@@ -2257,7 +2257,7 @@ static void outline_block_structure(drawing *dr, game_drawstate *ds,
* Iterate over all the blocks.
*/
for (i = 0; i < a; i++) {
- if (dsf_canonify(dsf, i) != i)
+ if (dsf_minimal(dsf, i) != i)
continue;
/*
@@ -2296,11 +2296,11 @@ static void outline_block_structure(drawing *dr, game_drawstate *ds,
tx = x - dy + dx;
ty = y + dx + dy;
nin += (tx >= 0 && tx < w && ty >= 0 && ty < w &&
- dsf_canonify(dsf, ty*w+tx) == i);
+ dsf_minimal(dsf, ty*w+tx) == i);
tx = x - dy;
ty = y + dx;
nin += (tx >= 0 && tx < w && ty >= 0 && ty < w &&
- dsf_canonify(dsf, ty*w+tx) == i);
+ dsf_minimal(dsf, ty*w+tx) == i);
if (nin == 0) {
/*
* Turn right.
@@ -2337,9 +2337,9 @@ static void outline_block_structure(drawing *dr, game_drawstate *ds,
* somewhere sensible.
*/
assert(x >= 0 && x < w && y >= 0 && y < w &&
- dsf_canonify(dsf, y*w+x) == i);
+ dsf_minimal(dsf, y*w+x) == i);
assert(x+dx < 0 || x+dx >= w || y+dy < 0 || y+dy >= w ||
- dsf_canonify(dsf, (y+dy)*w+(x+dx)) != i);
+ dsf_minimal(dsf, (y+dy)*w+(x+dx)) != i);
/*
* Record the point we just went past at one end of the