From c5076be383d7630d70666a543306c8f6ee65edb9 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sun, 25 Jun 2023 15:20:50 +0100 Subject: [PATCH] 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. --- keen.c | 10 +++++----- 1 file 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