Add '-v' option to patternsolver, to make it show its working.
[sgt/puzzles] / keen.c
diff --git a/keen.c b/keen.c
index feee59c..fe41496 100644 (file)
--- a/keen.c
+++ b/keen.c
@@ -281,8 +281,8 @@ static int solver_common(struct latin_solver *solver, void *vctx, int diff)
     for (box = 0; box < ctx->nboxes; box++) {
        int *sq = ctx->boxlist + ctx->boxes[box];
        int n = ctx->boxes[box+1] - ctx->boxes[box];
-       int value = ctx->clues[box] & ~CMASK;
-       int op = ctx->clues[box] & CMASK;
+       long value = ctx->clues[box] & ~CMASK;
+       long op = ctx->clues[box] & CMASK;
 
        if (diff == DIFF_HARD) {
            for (i = 0; i < n; i++)
@@ -1844,7 +1844,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues,
 
         /* Count the pencil marks required. */
         for (i = 1, npencil = 0; i <= w; i++)
-            if (tile & (1 << (i + DF_PENCIL_SHIFT)))
+            if (tile & (1L << (i + DF_PENCIL_SHIFT)))
                npencil++;
        if (npencil) {
 
@@ -1859,6 +1859,13 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues,
            pr = pl + TILESIZE - GRIDEXTRA;
            pt = ty + GRIDEXTRA;
            pb = pt + TILESIZE - GRIDEXTRA;
+           if (dsf_canonify(clues->dsf, y*w+x) == y*w+x) {
+               /*
+                * Make space for the clue text.
+                */
+               pt += TILESIZE/4;
+               /* minph--; */
+           }
 
            /*
             * We arrange our pencil marks in a grid layout, with
@@ -1914,7 +1921,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues,
             * Now actually draw the pencil marks.
             */
            for (i = 1, j = 0; i <= w; i++)
-               if (tile & (1 << (i + DF_PENCIL_SHIFT))) {
+               if (tile & (1L << (i + DF_PENCIL_SHIFT))) {
                    int dx = j % pw, dy = j / pw;
 
                    str[1] = '\0';
@@ -2240,6 +2247,10 @@ static void game_print(drawing *dr, game_state *state, int tilesize)
                          FONT_VARIABLE, TILESIZE/2,
                          ALIGN_VCENTRE | ALIGN_HCENTRE, ink, str);
            }
+
+    sfree(minus_sign);
+    sfree(times_sign);
+    sfree(divide_sign);
 }
 
 #ifdef COMBINED