aboutsummaryrefslogtreecommitdiff
path: root/unfinished
diff options
context:
space:
mode:
Diffstat (limited to 'unfinished')
-rw-r--r--unfinished/group.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/unfinished/group.c b/unfinished/group.c
index e72e3ce..2eca7c4 100644
--- a/unfinished/group.c
+++ b/unfinished/group.c
@@ -580,13 +580,11 @@ static int solver(const game_params *params, digit *grid, int maxdiff)
int w = params->w;
int ret;
struct latin_solver solver;
+
#ifdef STANDALONE_SOLVER
char *p, text[100], *names[50];
int i;
-#endif
- latin_solver_alloc(&solver, grid, w);
-#ifdef STANDALONE_SOLVER
for (i = 0, p = text; i < w; i++) {
names[i] = p;
*p++ = TOCHAR(i+1, params->id);
@@ -595,10 +593,13 @@ static int solver(const game_params *params, digit *grid, int maxdiff)
solver.names = names;
#endif
- ret = latin_solver_main(&solver, maxdiff,
- DIFF_TRIVIAL, DIFF_HARD, DIFF_EXTREME,
- DIFF_EXTREME, DIFF_UNREASONABLE,
- group_solvers, group_valid, NULL, NULL, NULL);
+ if (latin_solver_alloc(&solver, grid, w))
+ ret = latin_solver_main(&solver, maxdiff,
+ DIFF_TRIVIAL, DIFF_HARD, DIFF_EXTREME,
+ DIFF_EXTREME, DIFF_UNREASONABLE,
+ group_solvers, group_valid, NULL, NULL, NULL);
+ else
+ ret = diff_impossible;
latin_solver_free(&solver);