Don't fail an assertion when setting up the provided clues at the

start of the solver, if they contradict each other. (Could trigger on
user-provided grids.)

[originally from svn r9594]
This commit is contained in:
Simon Tatham
2012-07-29 21:29:26 +00:00
parent 6567260eb0
commit bbf800e49e

11
solo.c
View File

@ -1773,9 +1773,16 @@ static void solver(int cr, struct block_structure *blocks,
* Place all the clue numbers we are given.
*/
for (x = 0; x < cr; x++)
for (y = 0; y < cr; y++)
if (grid[y*cr+x])
for (y = 0; y < cr; y++) {
int n = grid[y*cr+x];
if (n) {
if (!cube(x,y,n)) {
diff = DIFF_IMPOSSIBLE;
goto got_result;
}
solver_place(usage, x, y, grid[y*cr+x]);
}
}
/*
* Now loop over the grid repeatedly trying all permitted modes