Stop calling face_text_pos() for faces that don't need to have text in
[sgt/puzzles] / keen.c
diff --git a/keen.c b/keen.c
index 1c96a5d..da55fb2 100644 (file)
--- a/keen.c
+++ b/keen.c
@@ -1450,11 +1450,12 @@ static int check_errors(game_state *state, long *errors)
                break;
              case C_DIV:
                {
-                   int d1 = cluevals[j], d2 = state->grid[i];
-                   if (d1 == 0 || d2 == 0)
+                   int d1 = min(cluevals[j], state->grid[i]);
+                   int d2 = max(cluevals[j], state->grid[i]);
+                   if (d1 == 0 || d2 % d1 != 0)
                        cluevals[j] = 0;
                    else
-                       cluevals[j] = d2/d1 + d1/d2;/* one of them is 0 :-) */
+                       cluevals[j] = d2 / d1;
                }
                break;
            }
@@ -1859,6 +1860,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
@@ -2005,6 +2013,11 @@ static float game_flash_length(game_state *oldstate, game_state *newstate,
     return 0.0F;
 }
 
+static int game_is_solved(game_state *state)
+{
+    return state->completed;
+}
+
 static int game_timing_state(game_state *state, game_ui *ui)
 {
     if (state->completed)
@@ -2240,6 +2253,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
@@ -2277,6 +2294,7 @@ const struct game thegame = {
     game_redraw,
     game_anim_length,
     game_flash_length,
+    game_is_solved,
     TRUE, FALSE, game_print_size, game_print,
     FALSE,                            /* wants_statusbar */
     FALSE, game_timing_state,