shithub: puzzles

Download patch

ref: c6e0161dd475415316ed66dc82794d68e52f0025
parent: 2adf0052d66eae88c7a5e55e67fe16e13f7018b5
author: Simon Tatham <[email protected]>
date: Sun Mar 25 18:27:38 EDT 2018

Fix false-positive completion detection in X Solo.

Spotted by Michael Quevillon. After checking the set of digits
appearing in one of the two main grid diagonals, we weren't clearing
the used[] array before using it to check the same thing about the
other diagonal. So if the first diagonal we check has one of
everything, then the second will be misidentified as correct (for the
purposes of game-completion detection, although not error
highlighting) even if it doesn't have one of everything.

--- a/solo.c
+++ b/solo.c
@@ -3103,6 +3103,8 @@
 		sfree(used);
 		return FALSE;
 	    }
+
+	memset(used, FALSE, cr);
 	for (i = 0; i < cr; i++)
 	    if (grid[diag1(i)] > 0 && grid[diag1(i)] <= cr)
 		used[grid[diag1(i)]-1] = TRUE;